let obj = {
a: 1,
b: 2,
c: {
d: 3
}
}
function defineReactive(target, key, value) {
observer(value);
Object.defineProperty(target, key, {
get() {
return value;
},
set(newValue) {
if(value !== newValue) {
value = newValue;
console.log('数据改变');
}
}
})
}
function observer(data) {
if(typeof data !== 'object') {
return data;
}
for(let key in data) {
defineReactive(data, key, data[key]);
}
}
observer(obj);
obj.c.d = 123;
console.log(obj)
012-使用defineProperty实现简单的数据劫持
最新推荐文章于 2022-07-14 09:13:53 发布