对象常量
结合writable:false和configurable:false就可以创建一个真正的常量属性(不可修改,重定义或者删除)禁止修改
禁止一个对象添加新属性并且保留已有属性,使用 Object.preventExtensions()
在非严格模式,创建属性b会静默失败。
严格模式下,抛出TypeError错误。
var myObject = {
a:2
}
Object.preventExtensions( myObject );
myObject.b = 3;
myObject.b; // undefined
密封
Object.seal(..) 会创建一个“密封”对象,这个方法会在一个现有对象上- 调用object.preventExtensions()
- 把所有现有属性标记为configurable:false
密封之后不能添加新属性、不能重新配置或删除任何现有属性。
可修改现有属性的值。
冻结
Object.freeze(..) 会创建一个冻结对象,这个方法会在一个现有对象上- 调用Object.seal()
- 把所有“数据访问”属性标记为writable:false