两个都冻结和海豹用于在 JavaScript 中创建不可扩展对象,但它们之间有很多差异。
- Object.seal()允许更改对象的现有属性。它可以防止删除现有属性,但无法防止外部更改。
- Object freeze()不允许这样。它使一个对象免受一切影响,即使是无法做出微小的改变。
用法:
Object.seal(objectname);
Object.freeze(objectname);
示例 1:这个例子说明了如何对象.seal()用于创建不可扩展的对象,但这并不能阻止对象的值被更改,并且可以看到该值已更新为 20。
javascript
// creates an object
let obj = {
// assigns 10 to value
value: 10
};
// creates a non-extensible object
Object.seal(obj);
// the value gets updated to 20
obj.value = 20;
console.log(obj.value);
输出:
20
示例 2:这个例子说明了如何对象.freeze()用于创建不可扩展的对象,但防止更改对象的现有值,并给出 10 作为输出。
javascript
let obj = {
// assigns 10 to value
value: 10
};
// creates a non-extensible object
Object.freeze(obj);
// updates the value
obj.value = 20;
// but cannot change the existing value
console.log(obj.value);
输出:
10
让我们以表格形式看看差异:
冻结 |
海豹 |
---|---|
它用于防止对象添加新属性 | 它用于使对象的属性不可配置。 |
还可以使用它来避免修改当前存在的属性 | 它还用于防止添加新属性 |
它将参数作为对象 | 它将参数作为对象 |
它的返回类型是对象类型。 | 它的返回类型是e-sealed对象类型。 |
相关用法
- Javascript fetch()用法及代码示例
- Javascript find()和filter()的区别用法及代码示例
- Javascript Atomics.add( )用法及代码示例
- Javascript Atomics.and()用法及代码示例
- Javascript Atomics.compareExchange( )用法及代码示例
- Javascript Atomics.exchange( )用法及代码示例
- Javascript Atomics.isLockFree( )用法及代码示例
- Javascript Atomics.load( )用法及代码示例
- Javascript Atomics.or( )用法及代码示例
- Javascript Atomics.store( )用法及代码示例
- Javascript Atomics.sub( )用法及代码示例
- Javascript Atomics.xor()用法及代码示例
- Javascript Date.UTC( )用法及代码示例
- Javascript array.flatMap()用法及代码示例
- Javascript Array.of()用法及代码示例
- Javascript array.includes()用法及代码示例
- Javascript Array.isArray()用法及代码示例
- Javascript array.keys()用法及代码示例
- Javascript array.reduceRight()用法及代码示例
- Javascript array.toLocaleString()用法及代码示例
- Javascript array.values()用法及代码示例
- Javascript arrayBuffer.byteLength用法及代码示例
- Javascript ArrayBuffer.isView()用法及代码示例
- Javascript boolean.toString()用法及代码示例
- Javascript boolean.valueOf()用法及代码示例
注:本文由纯净天空筛选整理自ankit0812大神的英文原创作品 What is the difference between freeze and seal in JavaScript ?。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。