【发布时间】:2014-02-19 13:05:59
【问题描述】:
我刚刚听说了 JavaScript 方法 freeze 和 seal,它们可用于使任何对象不可变。
这里有一个简短的例子如何使用它:
var o1 = {}, o2 = {};
Object.freeze(o2);
o1["a"] = "worked";
o2["a"] = "worked";
alert(o1["a"]); //prints "worked"
alert(o2["a"]); //prints "undefined"
freeze 和 seal 有什么区别?它们能提高性能吗?
【问题讨论】:
-
只是给任何查看此问题的人的注释,接受的答案实际上是不正确的。 @tungd 的回答是正确的。
-
另外注意,除了
Object.seal和Object.freeze之外,还有Object.preventExtensions。Object.preventExtensions只是防止将新项目添加到对象中。您可以删除、配置和更改使用Object.preventExtensions关闭扩展性的对象的属性值。