Object.seal & Object.freeze & Object.preventExtensions 整理
该文章仅为mdn链接下内容的整理,方便使用。
Object.seal mdn链接
- 能进行的操作
- 改变对象属性值
- 不能进行的操作(静默失败或严格模式下会抛出错误)
- 不能添加新属性
- 所有已有属性会变的不可配置
- 属性变的不可删除
- 数据属性不能被重新定义成为访问器属性
- 相关方法
- Object.isSealed
Object.freezemdn链接
- 不能进行的操作(静默失败或严格模式下会抛出错误)
- 所有属性都不可能以任何方式被修改
- 不能修改该对象已有属性的可枚举性、可配置性、可写性
- 不能修改已有属性的值
- 对象的原型也不能被修改
- 不能添加或者删除
- 所有属性都不可能以任何方式被修改
- 注意
- 如果一个属性的值是个对象,则这个对象中的属性是可以修改的,除非它也是个冻结对象
- 可以通过递归冻结每个类型为对象的属性(深冻结)
- 数组作为一种对象,被冻结,其元素不能被修改。没有数组元素可以被添加或移除
- 如果一个属性的值是个对象,则这个对象中的属性是可以修改的,除非它也是个冻结对象
- 相关方法
- Object.isFrozen
Object.preventExtensions mdn链接
- 不能进行的操作(静默失败或严格模式下会抛出错误)
- 不能添加新属性
- 目标对象的 [[prototype]] 不可变
- 相关方法
- Object.isExtensible