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