vue2响应式 observe方法
export function observe(data) {
if (typeof data != "object" || data == null) {
return data;
}
return new Observer(data);
}
class Observer {
constructor(data) {
this.walk(data);
}
walk(data) {
Object.keys(data).forEach((item) => defineReactive(data, key, data[key]));
}
}
export function defineReactive(target, key, value) {
observe(value);
Object.defineProperty(target, key, {
get() {
return value;
},
set(newValue) {
if ((newValue = value)) return;
observe(newValue);
value = newValue;
},
});
}