seal()
方法可防止将新属性添加到对象,并将所有现有属性标记为不可配置。
seal()
方法的语法为:
Object.seal(obj)
seal()
方法是一种静态方法,使用Object
类名称进行调用。
seal()参数
seal()
方法采用:
- obj-要密封的对象。
从seal()返回值
- 返回被密封的对象。
示例:使用seal()
let obj = {
foo: "bar",
func: function () {},
};
// before sealing, properties can be added, modified, or removed
obj.foo = "JavaScript";
obj.value = 5;
delete obj.func;
// sealing the object
o = Object.seal(obj);
// can still change property values
obj.foo = "bar1";
// no other change
// fails silently
obj.foo1 = "bar";
delete obj.foo;
console.log(obj); // { foo: 'bar1', value: 5 }
// cannot convert data property to accessors or vice versa
Object.defineProperty(obj, "foo", {
get: function () {
return "g";
},
});
// TypeError Cannot redefine property: foo
输出
{ foo: 'bar1', value: 5 }
TypeError Cannot redefine property: foo
注意事项 :
- 默认情况下,对象是可扩展的(可以向其中添加新属性)。对象的密封使对象的属性固定且不可变。只要它们是可写的,当前属性的值仍可以更改。
-
Object.isSealed()
可用于检查对象是否密封。 - 尝试将数据属性转换为访问器,反之亦然,将无提示失败或抛出
TypeError
。
推荐阅读: JavaScript对象isSealed()