Object.defineProperty

136 阅读1分钟

1、数据劫持 var obj = { name: 333, age: 11 };

  function defineP(obj, key, value) {
    Object.defineProperty(obj, key, {
      get: function proxyGetter() {
        console.log(key + '属性被调用了')
        return value
      },
      set(val) {
        console.log(val)
        console.log(key + '属性被赋值了')
        value = val
      }
    })
  }
  

2、其余的一些属性

 Object.defineProperty(obj, 'sex', {
    value: 1,
    enumerable: false, // 可枚举
    configurable: false, //可删除
    writable: false // 可写
  })     
  
  

(1)enumerable: false, // 可枚举 设置为false,表示不可枚举for in 循环的时候,不能输出这个key

(2)configurable: false, //可删除(设置为false表示不可被删除)

(3)writable: false // 可写(可被覆盖设置false表示不可被覆盖)