《你不知道的JavaScript(上卷)》笔记:对象不变性

  • 对象常量
    结合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

猜你喜欢

转载自blog.csdn.net/wuweitiandian/article/details/79546110