在阅读源码时发现proxy与reflect结合使用了,为什么不直接target[key] = value
下面的情景
let data = {
name:'张三',
age:18,
get userInfo(){
return this.name+this.age
}
}
let dataProxy = new Proxy(data,{
get(target,key,receiver){
//receiver指向dataProxy
console.log('get执行了');
return target[key];
// 此时get只会执行一次,是因为userInfo中使用的this指向data并不是dataProxy
// 但是我们需要在get中收集依赖所以需要改变userInfo中的this指向,就要用到Reflect
// Reflect.get的最后一个参数用于改变this指向
//return Reflect.get(target,key,receiver)
}
})
console.log(dataProxy.userInfo) // 张三18