📅  最后修改于: 2023-12-03 15:16:06.220000             🧑  作者: Mango
Object.isSealed()方法用于判断一个对象是否被密封。
当一个对象被密封时,它的属性不可以被添加、删除或通过属性描述符来修改,但是数据属性的值可以被修改。
Object.isSealed(obj)
其中,obj为需要检查的对象。
Object.isSealed()方法返回一个布尔值,表示该对象是否被密封。
const obj = {
name: 'foo',
age: 18
};
Object.seal(obj);
console.log(Object.isSealed(obj)); // true
obj.gender = 'male';
console.log(obj); // { name: 'foo', age: 18 }
delete obj.age;
console.log(obj); // { name: 'foo' }
Object.defineProperty(obj, 'name', { writable: false });
console.log(obj); // { name: 'foo' }
以上示例中,首先定义了一个对象obj,并定义了两个属性name和age。然后通过Object.seal()方法将对象obj密封。最后通过Object.isSealed()方法检查对象是否被密封,结果为true。
接着,在对象obj上添加一个属性gender,但因为对象已被密封,该属性并未被添加成功。
然后删除了属性age,同样因为对象已被密封,该操作也未成功。
最后用Object.defineProperty()方法将属性name的可写性设置为false,同样未成功,因为对象已被密封。
Object.isSealed()方法只能用于对象,如果传入的参数不是对象,会抛出TypeError错误。
Object.isSealed()方法只能判断一个对象是否被密封,无法判断一个对象的属性是否被密封。若需要检查对象的每个属性是否被密封,需要遍历对象的每个属性进行检查。