简单的数据监听我们已经了解怎么做了,但如果属性也是个对象,我们希望它也能被监听呢?显然我们需要做循环判断了。
let test = { a:1, b:2, c:{ d:3, e:4, }, }; Object.keys(obj).forEach(key=>{ let val = obj[key]; Object.defineProperty(obj,key,{ get(){ return val; }, set(newVal){ val = newVal; console.log(`你修改了 ${key}`) } }) if(typeof val === 'object'){ let newObj = val; Object.keys(newObj).forEach(key=>{ ... }) } })