Reflect.isExtensible()
Reflect.isExtensible()
静态方法类似于 Object.isExtensible()
。它确定一个对象是否可扩展(是否可以向其添加新属性)。
试一试
语法
js
Reflect.isExtensible(target)
参数
target
-
要检查其是否可扩展的目标对象。
返回值
一个 Boolean
,指示目标对象是否可扩展。
异常
TypeError
-
如果
target
不是对象,则抛出。
描述
Reflect.isExtensible()
提供了检查对象是否可扩展的反射语义。与 Object.isExtensible()
的唯一区别在于如何处理非对象目标。如果目标不是对象,则 Reflect.isExtensible()
会抛出一个 TypeError
,而 Object.isExtensible()
对于非对象目标始终返回 false
。
Reflect.isExtensible()
调用 target
的 [[IsExtensible]]
对象内部方法。
示例
使用 Reflect.isExtensible()
另请参阅 Object.isExtensible()
。
js
// New objects are extensible.
const empty = {};
Reflect.isExtensible(empty); // true
// ...but that can be changed.
Reflect.preventExtensions(empty);
Reflect.isExtensible(empty); // false
// Sealed objects are by definition non-extensible.
const sealed = Object.seal({});
Reflect.isExtensible(sealed); // false
// Frozen objects are also by definition non-extensible.
const frozen = Object.freeze({});
Reflect.isExtensible(frozen); // false
与 Object.isExtensible() 的区别
如果此方法的 target
参数不是对象(原始值),则会导致 TypeError
。对于 Object.isExtensible()
,非对象 target
将返回 false 且不会出现任何错误。
js
Reflect.isExtensible(1);
// TypeError: 1 is not an object
Object.isExtensible(1);
// false
规范
规范 |
---|
ECMAScript 语言规范 # sec-reflect.isextensible |
浏览器兼容性
BCD 表格仅在启用了 JavaScript 的浏览器中加载。