JavaScript 创建值不可变对象

2020-03-08  本文已影响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]
上一篇 下一篇

猜你喜欢

热点阅读