代理,提供修改底层实现的方式,可以重写所有Reflect的方法
一个Proxy对象包装另一个对象并拦截诸如读取/写入属性和其他操作,可以选择自行处理,或者透明的用于该对象处理它们
语法**
//代理一个目标对象
//target:目标对象
//handler:是一个普通对象,其中可以重写底层实现
//返回一个代理对象
new Proxy(target, handler)
示例
const obj = {
a:1,
b:3,
}
const proxy = new Proxy(obj,{
/**
* 修改属性值
*/
set(target, propertyKey, value){
Reflect.set(target,propertyKey,value)
},
/**
* 获取属性值
*/
get(target,propertyKey){
if(Reflect.has(target,propertyKey)){
return Reflect.get(target,propertyKey)
}
}
})
proxy.a = 100
console.dir(proxy.a)