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 的浏览器中加载。

另请参阅