为什么要使用Proxy的Receiver。
看下列代码
const obj = {
_name: "Han",
get name() {
return this._name
},
set name(newVal) {
this._name = newVal
}
}
let objProxy = new Proxy(obj,{
get(target,key){
console.log(`调用了proxy 的 get方法`,key)
return Reflect.get(target,key)
},
set(target,key,newVal){
Reflect.set(target,key,newVal)
}
})
console.log(objProxy.name)
// 输出结果
调用了proxy 的 get方法 name
han
那么下面我们来看一下objProxy.name 的执行 过程
在实际的过程中其实访问的是_name这个属性
那么就会出现一个问题 在这个get 里面他的this 的指向是什么 是objProxy对象还是 Obj对象呢
Obj对象:为什么?因为默认情况下,直接通过this._name 去访问,他访问的就是obj对象
如果我们想objProxy来访问_name 然后 objProxy.get方法,监视用来监视_name访问过程
用Receiver来代替原对象的this指向
再次执行,发现name 被Proxy 执行,然后_name也被监听到了