测试Object.defineProperty
监听对象时,我知道它无法触发set方法,但为什么会触发get方法?百思不得其解
相关代码
let obj = {
data:{
name:123
}
}
function defineProperty(obj, key, val){
Object.defineProperty(obj, key, {
enumerable: true,
configurable: true,
get() {
// 读取方法
console.log('读取', key, '成功')
return val
},
set(newval) {
// 赋值监听方法
if (newval === val) return
console.log('监听赋值成功', newval)
val = newval
// 可以执行渲染操作
}
})
}
defineProperty(obj,'data',obj['data'])
obj.data.name = 123333