// 每一个属性绑定一个dep
functiondefineReactive(data,key,val=data[key]){
// 内部使用了闭包
letdep = newDep();
Object.defineProperty(data,key,{
enumerable:false,
configurable:true,
get(){
// dep.depend()
console.log('访问');
return val;
},
set(newVal){
if(val===newVal){
return;
}
val = newVal
console.log('设置');
// dep.notify();
}
})
}
Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组
Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组
Object.getOwnPropertyNames(data) 不可枚举的也有
in 会返回一个由一个给定对象的自身可枚举属性组成的数组和自己原型上的属性
constdata = {a:1,b:2}
defineReactive(data,'a',data['a'])
console.log(data.a, //
data, // 无a
Object.keys(data), // 无a
Object.getOwnPropertyNames(data)); //有a