JavaScript Object.seal()方法用于密封对象。密封对象不允许添加新属性,并将所有现有属性标记为不可配置。尽管当前属性的值可以更改,只要它们是可写的。要密封的对象作为参数传递,该方法返回已密封的对象。
用法:
Object.seal(obj)
参数:
- obj:它是必须密封的物体。
返回值:Object.sealed() 返回传递给函数的对象。
下面提供了上述函数的示例。
示例 1:在此示例中,对象 “ob2” 已被分配了对象 “obj1” 的属性,并且它已被密封,因此无法添加新值。由于密封对象允许更改现有属性,因此 obj2 的属性 1 的值已更新。
Javascript
// creating an object constructor and assigning values to it
const obj1 = { property1: 'initial_data' };
// creating a second object which will seal the properties
//of the first object
const obj2 = Object.seal(obj1);
// Updating the properties of the frozen object
obj2.property1 = 'new_data';
// Displaying the properties of the frozen object
console.log(obj2.property1);
输出:
"new_data"
示例 2:在此示例中,对象 “obj” 已被分配“prop: function”,由于对象“obj 未密封”,该对象后来被删除。之后,一个新对象“o”被分配了“obj”的密封值,这防止了它被删除,但允许更新现有属性。
Javascript
// creating an object constructor and assigning values to it
let obj = { prop: function () { }, name: 'adam' };
// Displaying the properties of the object created
console.log(obj);
// Updating the properties of the object
obj.name = 'billy';
delete obj.prop;
// Displaying the updated properties of the object
console.log(obj);
// Sealing the object using object.seal() method
let o = Object.seal(obj);
// Updating the properties of the object
delete obj.prop;
// Displaying the updated properties of the object
console.log(obj);
// Updating the properties of the sealed object
obj.name = 'chris';
// Displaying the properties of the frozen object
console.log(obj);
输出:
Object { prop: function () {}, name: "adam" } Object { name: "billy" } Object { name: "billy" } Object { name: "chris" }
应用:
- Object.seal() 用于密封对象和数组,使对象不可变。
异常:
- 如果传递的参数不是对象,则会导致TypeError。
- 删除密封对象或向密封对象添加属性将失败或引发类型错误。
- 将数据属性转换为访问器或反之亦然将引发 TypeError。
我们有 Javascript 对象方法的完整列表,要检查这些方法,请阅读这篇JavaScript Object Complete Reference 文章。
支持的浏览器:
- 谷歌浏览器 6.0 及以上版本
- Internet Explorer 9.0 及以上版本
- Mozilla 4.0 及以上版本
- Opera 12 及以上版本
- Safari 5.0 及以上版本
- 边 12 及以上
相关用法
- JavaScript Object toLocaleString()用法及代码示例
- JavaScript Object toString()用法及代码示例
- JavaScript Object valueOf()用法及代码示例
- JavaScript Object hasOwnProperty()用法及代码示例
- JavaScript Object getOwnPropertyDescriptor()用法及代码示例
- JavaScript Object getOwnPropertyDescriptors()用法及代码示例
- JavaScript Object getOwnPropertyNames()用法及代码示例
- JavaScript Object getOwnPropertySymbols()用法及代码示例
- JavaScript Object __defineGetter__()用法及代码示例
- JavaScript Object keys()用法及代码示例
- JavaScript Object propertyIsEnumerable()用法及代码示例
- JavaScript Object getPrototypeOf()用法及代码示例
- JavaScript Object freeze()用法及代码示例
- JavaScript Object is()用法及代码示例
- JavaScript Object values()用法及代码示例
- JavaScript Object isPrototypeOf()用法及代码示例
- JavaScript Object hasOwn()用法及代码示例
- JavaScript Object isFrozen()用法及代码示例
- JavaScript Object entries()用法及代码示例
- JavaScript Object isSealed()用法及代码示例
- JavaScript Object create()用法及代码示例
- JavaScript Object assign()用法及代码示例
- JavaScript Object.keys()用法及代码示例
- JavaScript Object.values()用法及代码示例
- JavaScript Object.entries()用法及代码示例
注:本文由纯净天空筛选整理自Shubrodeep Banerjee大神的英文原创作品 JavaScript Object seal() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。