Object.seal & Object.freeze & Object.preventExtensions 整理(内容来自mdn)

190 阅读1分钟

Object.seal & Object.freeze & Object.preventExtensions 整理

该文章仅为mdn链接下内容的整理,方便使用。

Object.seal mdn链接

  • 能进行的操作
    • 改变对象属性值
  • 不能进行的操作(静默失败或严格模式下会抛出错误)
    • 不能添加新属性
    • 所有已有属性会变的不可配置
      • 属性变的不可删除
      • 数据属性不能被重新定义成为访问器属性
  • 相关方法
    • Object.isSealed

Object.freezemdn链接

  • 不能进行的操作(静默失败或严格模式下会抛出错误)
    • 所有属性都不可能以任何方式被修改
      • 不能修改该对象已有属性的可枚举性、可配置性、可写性
      • 不能修改已有属性的值
      • 对象的原型也不能被修改
    • 不能添加或者删除
  • 注意
    • 如果一个属性的值是个对象,则这个对象中的属性是可以修改的,除非它也是个冻结对象
      • 可以通过递归冻结每个类型为对象的属性(深冻结)
    • 数组作为一种对象,被冻结,其元素不能被修改。没有数组元素可以被添加或移除
  • 相关方法
    • Object.isFrozen

Object.preventExtensions mdn链接

  • 不能进行的操作(静默失败或严格模式下会抛出错误)
    • 不能添加新属性
    • 目标对象的 [[prototype]] 不可变
  • 相关方法
    • Object.isExtensible