Reflect.isExtensible()
Reflect.isExtensible() 静态方法类似于 Object.isExtensible()。它用于确定一个对象是否是可扩展的(即是否可以向其添加新属性)。
试一试
const object1 = {};
console.log(Reflect.isExtensible(object1));
// Expected output: true
Reflect.preventExtensions(object1);
console.log(Reflect.isExtensible(object1));
// Expected output: false
const object2 = Object.seal({});
console.log(Reflect.isExtensible(object2));
// Expected output: false
语法
js
Reflect.isExtensible(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® 2026 语言规范 # sec-reflect.isextensible |
浏览器兼容性
加载中…