1. 不可扩展对象
可写,可删除,不可新增
Object.preventExtensions(obj)
Object.isExtensible(obj)
2. 密封对象
可写,不可删除,不可新增, [[Configurable]]设置为false
Object.seal(obj)
Object.isSealed(obj)
3. 冻结对象
不可写,不可删除,不可新增, [[Configurable]]设置为false, [[Writable]]为false
Object.freeze(obj)
Object.isFrozen(obj)
扩展:
对象属性的[[Configurable]]特性为false时,表示不能再用Object.defineProperty(obj, prop, descriptor)修改对象属性的特性了。
对象属性的特性描述:
{ value: 任意类型的值, // 值 enumerable: Boolean, // 是否可枚举(for...in或Object.keys()) configurable: Boolean, // 是否可以删除目标属性或是否可以再次修改属性的特性 writable: Boolean // 属性值是否可以重写 }