JavaScript中的Object.seal()和Object.freeze()有什么区别?

Object.seal()和Object.freeze()之间的区别在于,前者可以允许更改对象的现有属性,而后者则不允许对对象进行任何更改。Object.freeze()使对象不受任何影响,即使微小的更改也无法更改。

Object.seal()

Object.seal()方法阻止删除现有属性,但不能保护现有属性不受外部更改的影响。

示例

在下面的示例中,由于使用了Object.seal()方法,尽管应用了delete方法,但用户定义的属性“ prop1”并未被删除,而仅更新了属性“ prop1”的值。  

<html>

<body>

<script>

   var object1 = {

      prop1: 1

   };

   Object.seal(object1);

   object1.prop1 = 2; // value got changed

   delete object1.prop1;

   document.write(object1.prop1); // it gives value as 2 because of seal.

</script>

</body>

</html>

输出结果

2


Object.freeze()

除了Object.seal()的功能之外,Object.freeze()方法甚至都不允许对对象的现有属性进行细微的更改。

<html>

<body>

<script>

   var object1 = {

      prop1: 1

   };

   Object.freeze(object1);

   object1.prop1 = 2; // value got updated

   delete object1.prop1; // value got deleted

   document.write(object1.prop1); // it gives 1 as output despite value updated to 2

</script>

</body>

</html>

输出结果

1

以上是 JavaScript中的Object.seal()和Object.freeze()有什么区别? 的全部内容, 来源链接: utcz.com/z/359600.html

回到顶部