Object.isExtensible()
Object.isExtensible() 静态方法用于判断一个对象是否是可扩展的(即是否可以向其中添加新属性)。
试一试
const object = {};
console.log(Object.isExtensible(object));
// Expected output: true
Object.preventExtensions(object);
console.log(Object.isExtensible(object));
// Expected output: false
语法
js
Object.isExtensible(obj)
参数
obj-
需要检查的对象。
返回值
一个 Boolean 值,指示给定的对象是否可扩展。
描述
默认情况下,对象是可扩展的:可以向它们添加新属性,并且它们的 [[Prototype]] 可以被重新分配。可以使用 Object.preventExtensions()、Object.seal()、Object.freeze() 或 Reflect.preventExtensions() 中的任何一个来将对象标记为不可扩展。
示例
使用 Object.isExtensible
js
// New objects are extensible.
const empty = {};
Object.isExtensible(empty); // true
// They can be made un-extensible
Object.preventExtensions(empty);
Object.isExtensible(empty); // false
// Sealed objects are by definition non-extensible.
const sealed = Object.seal({});
Object.isExtensible(sealed); // false
// Frozen objects are also by definition non-extensible.
const frozen = Object.freeze({});
Object.isExtensible(frozen); // false
非对象参数
在 ES5 中,如果此方法的参数不是对象(即原始类型),则会引发 TypeError。在 ES2015 中,如果传递了非对象参数,它将返回 false 而不会引发任何错误,因为原始类型根据定义是不可变的。
js
Object.isExtensible(1);
// TypeError: 1 is not an object (ES5 code)
Object.isExtensible(1);
// false (ES2015 code)
规范
| 规范 |
|---|
| ECMAScript® 2026 语言规范 # sec-object.isextensible |
浏览器兼容性
加载中…