📅  最后修改于: 2023-12-03 15:16:06.217000             🧑  作者: Mango
Object.isExtensible()
方法用于判断一个对象是否可扩展,即是否可以在该对象上添加新的属性。
Object.isExtensible(obj)
参数:
obj
:要判断的对象。
返回值:
一个布尔值,表示该对象是否可扩展。可扩展返回true
,否则返回false
。
const obj = { a: 1 };
console.log(Object.isExtensible(obj)); // true
Object.preventExtensions(obj);
console.log(Object.isExtensible(obj)); // false
输出:
true
false
上述代码定义了一个名为obj
的对象,初始时该对象是可扩展的。然后调用Object.preventExtensions()
方法,防止对象进一步扩展。最后通过Object.isExtensible()
方法判断对象是否可扩展,结果为true
和false
。
const obj = {};
console.log(Object.isExtensible(obj)); // true
Object.defineProperty(obj, 'a', {
value: 1,
writable: true,
enumerable: true,
configurable: false
});
console.log(Object.isExtensible(obj)); // false
输出:
true
false
上述代码定义了一个空对象obj
,初始时该对象是可扩展的。然后通过Object.defineProperty()
方法定义了一个属性a
,并将其设置为不可配置。最后通过Object.isExtensible()
方法判断对象是否可扩展,结果为true
和false
。
Object.isExtensible()
方法只能判断对象是否可扩展,无法判断对象是否被冻结。如果对象被冻结,则无法在该对象上添加、删除或修改属性。
Object.isExtensible()
方法并不会影响对象上已有的属性是否可配置,只会影响对象本身是否可扩展。
如果一个对象被传递到Object.isExtensible()
方法中,但该对象不是对象类型,则会抛出TypeError
异常。