美文网首页
JavaScript 创建值不可变对象

JavaScript 创建值不可变对象

作者: _____西班木有蛀牙 | 来源:发表于2020-03-08 13:47 被阅读0次
    const obj1 = Object.freeze({
      a: 1,
    })
    
    obj1.a = 2 // 不能修改
    
    Object.deepFreeze = function (obj){
      var propNames = Object.getOwnPropertyNames(obj);
    
      propNames.forEach(name => {
        var prop = obj[name];
        if (typeof prop == 'object' && prop !== null) {
          Object.deepFreeze(prop)
        }
      })
    
      return Object.freeze(obj)
    }
    
    const obj1 = Object.deepFreeze({
      a: {
        b: {
          c: 1,
          d: [1, 2, 3],
        },
      },
    })
    
    obj1.a.b.c = 2
    obj1.a.b.d[1] = 5
    console.log(obj1.a.b.c) // 1
    console.log(obj1.a.b.d) // [1, 2, 3]
    

    相关文章

      网友评论

          本文标题:JavaScript 创建值不可变对象

          本文链接:https://www.haomeiwen.com/subject/ojpddhtx.html