Proxy与reflect结合的原因

88 阅读1分钟

在阅读源码时发现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