我刚刚听说了 JavaScript 方法freeze和seal,它可以用来使任何对象不可变。
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?他们能提高性能吗?
Object.seal
delete
writable
value
writeable
TypeError
Object.freeze
两者都不会影响“深层”/孙子对象。例如,如果obj被冻结,obj.el则可以重新分配,但是obj.el可以修改,例如obj.el.id可以改变的值。
obj
obj.el
obj.el.id
密封或冻结对象可能会影响其枚举速度,具体取决于浏览器:
测试:密封物体,冷冻物体。