📅  最后修改于: 2023-12-03 14:42:26.084000             🧑  作者: Mango
在Javascript中,Object seal()方法可以用于将对象密封,也就是禁止添加新属性,同时也禁止删除已有属性。
Object.seal(obj)
参数说明:
obj
:要密封的对象。返回值是被密封的对象。
const person = {
name: 'Tom',
age: 18
};
Object.seal(person);
person.name = 'Jerry'; // 成功修改属性
person.job = 'Student'; // 添加新属性失败
console.log(person); // {name: "Jerry", age: 18}
在上面的示例中,我们创建了一个名为person
的对象,并将其密封。虽然我们成功修改了name
属性的值,但添加新属性job
却失败了。因为job
不是person
中原有的属性,而密封之后,我们已经无法添加新属性了。
Object.seal()
方法仅密封对象的第一层属性,对于对象的嵌套属性则不生效。
密封对象的属性值仍然可以被修改,只是不能添加或删除属性。
被密封的对象不能进行扩展操作,即使在非严格模式下,也不能进行扩展。
密封对象可以被解密封(Object.isSealed(obj)
方法可以判断对象是否被密封,Object.freeze(obj)
方法可以冻结对象)。
如果要解密封对象,可以使用Object.defineProperty()
方法。代码如下:
Object.defineProperty(person, 'name', {
configurable: true
});
将configurable
参数设置为true
即可重新对属性进行修改、删除等操作。