一、
const obj = {
name: "why",
age: 18
}
Object.defineProperty(obj, "name", {
get: function() {
console.log("监听到obj对象的name属性被访问了")
},
set: function() {
console.log("监听到obj对象的name属性被设置值")
}
})
Object.keys(obj).forEach(key => {
let value = obj[key]
Object.defineProperty(obj, key, {
get: function() {
console.log(`监听到obj对象的${key}属性被访问了`)
return value
},
set: function(newValue) {
console.log(`监听到obj对象的${key}属性被设置值`)
value = newValue
}
})
})
二、ES6
const obj = {
name: "why",
age: 18
}
const objProxy = new Proxy(obj, {
// 获取值时的捕获器
get: function(target, key) {
console.log(`监听到对象的${key}属性被访问了`, target)
return target[key]
},
// 设置值时的捕获器
set: function(target, key, newValue) {
console.log(`监听到对象的${key}属性被设置值`, target)
target[key] = newValue
}
})
版权声明:本文为weixin_44283589原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。