📜  Javascript Object seal()方法(1)

📅  最后修改于: 2023-12-03 14:42:26.084000             🧑  作者: Mango

Javascript Object seal()方法

在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即可重新对属性进行修改、删除等操作。