📜  Javascript Object.seal()

📅  最后修改于: 2020-09-27 06:56:12             🧑  作者: Mango

JavaScript Object.seal()方法密封给定的对象。

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()