当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Javascript freeze和seal的区别用法及代码示例


两个都冻结海豹用于在 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对象类型。


相关用法


注:本文由纯净天空筛选整理自ankit0812大神的英文原创作品 What is the difference between freeze and seal in JavaScript ?。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。