Proxy
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy
Reflect
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Reflect
Proxy和Reflect都是反射对象,它们被设计并且互相补充,反射对象是一个可以在运行时用来操作对象的变量、属性和方法的对象
const wumao = {
age: '16',
get value() {
return this.age
},
}
const original = {
age: '20',
}
const handler = {
get(target, key, receiver) {
return target[key]
// return Reflect.get(target, key, receiver) // 展开和注释这一段
},
}
const proxy = new Proxy(wumao, handler)
Object.setPrototypeOf(original, proxy) // 设置原型
console.log(original.value) // 如果不用receiver 指向的是16 ,否则是原对象20
总结
其中的receiver指向的是原对象,Reflect.get的第三个参数是可以取值的时候指定内部的this指向,如上所示,如果不用receiver可能会导致原型的属性屏蔽了根对象的属性这种事情发生