js监听对象属性的改变

在ES5中,通过defineProperty()进行监听

  • 假设对user对象的name属性进行监听,当设置name属性值时,会执行相应的函数
Object.defineProperty(user, 'name', {
    set : funtion(value){
               name = value;
                console.log('set: name:' + value)
        }
})

当需要设置对象中多个属性时,使用defineProperties()进行监听

Object.defineProperties(obj,{
  a : {
        configurable: true, // 设置属性可以更改,默认为false
        set : function(value){}
  },      
   b : {
       configurable: true, // 设置属性可以更改,默认为false
        set : function(value){}
  }
} 
})

 

在ES6中,通过Proxy实现

funtion handle(){
   // 改写set方法,监听设置
    set: funtion(){},
    get: funtion(){}
}

let p = new Proxy({},handle) // 第一个参数为监听的对象,第二个参数为改写的方法

 

posted @ 2020-04-14 10:23  ashen1999  阅读(8689)  评论(0编辑  收藏  举报