在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) // 第一个参数为监听的对象,第二个参数为改写的方法