一、freeze
Object.freeze()方法可以冻结(浅冻结 )一个对象,冻结指的是不能向这个对象添加新的属性(增),不能修改其已有属性的值(改),不能删除已有属性(删),以及不能修改该对象已有属性的可枚举性、可配置性、可写性。该方法返回传递的对象,而不是创建一个被冻结的副本 。
1 | // 浅冻结 |
注:通过Object.isFrozen(obj)可以判断对象是否被冻结
二、seal
Object.seal()方法封闭一个对象,阻止添加新属性并将所有现有属性标记为不可配置。当前属性的值只要可写就可以改变。
注:不会影响从原型链上继承的属性。但 __proto__属性的值不能通过对象直接修改。
三、preventExtensions
Object.preventExtensions()方法让一个对象变的不可扩展,也就是永远不能再添加新的属性。
注:Object.preventExtensions()仅阻止添加自身的属性。但属性仍然可以添加到对象原型 。