Reflect.preventExtensions()
Reflect.preventExtensions()
静态方法类似于 Object.preventExtensions()
。它可以防止将来向对象添加新的属性(即,防止对象将来扩展)。
试试看
语法
js
Reflect.preventExtensions(target)
参数
target
-
要阻止扩展的目标对象。
返回值
一个 Boolean
,指示目标是否已成功设置为阻止扩展。
异常
TypeError
-
如果
target
不是对象,则抛出。
描述
Reflect.preventExtensions()
提供了阻止对象扩展的反射语义。与 Object.preventExtensions()
的区别在于
- 如果目标不是对象,则
Reflect.preventExtensions()
会抛出一个TypeError
,而Object.preventExtensions()
始终按原样返回非对象目标。 Reflect.preventExtensions()
返回一个Boolean
,指示目标是否已成功设置为阻止扩展,而Object.preventExtensions()
返回目标对象。
Reflect.preventExtensions()
调用 target
的 [[PreventExtensions]]
对象内部方法。
示例
使用 Reflect.preventExtensions()
另请参阅 Object.preventExtensions()
。
js
// Objects are extensible by default.
const empty = {};
Reflect.isExtensible(empty); // true
// ...but that can be changed.
Reflect.preventExtensions(empty);
Reflect.isExtensible(empty); // false
与 Object.preventExtensions() 的区别
如果此方法的 target
参数不是对象(原始值),则会导致 TypeError
。对于 Object.preventExtensions()
,非对象 target
将按原样返回,没有任何错误。
js
Reflect.preventExtensions(1);
// TypeError: 1 is not an object
Object.preventExtensions(1);
// 1
规范
规范 |
---|
ECMAScript 语言规范 # sec-reflect.preventextensions |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。