原文链接: vue defineProperty 监听属性变化
上一篇: es6 代理 Proxy 增强对象功能
下一篇: vue 自定义插件
使用Object.defineProperty 监听属性变化
function conver(obj) {
Object.keys(obj).forEach(key => {
let val = obj[key]
Object.defineProperty(obj, key, {
get() {
console.log('get ', val)
return val
},
set(newVal) {
console.log('set ', newVal)
val = newVal
}
})
})
}
let foo = {
bar: 1
}
console.log(foo.bar)
foo.bar = 2
console.log(foo.bar)
conver(foo)
console.log(foo.bar)
foo.bar = 3
console.log(foo.bar)
1
2
get 2
2
set 3
get 3
3