Proxy 对象用于定义基本操作的自定义行为如属性查找,赋值,枚举,函数调用等
1.基本语法:
let p = new Proxy(target, handler);
target是你要代理的对象.它可以是JavaScript中的任何合法对象.如: (数组, 对象, 函数等等)
handler是你要自定义操作方法的一个集合.
p是一个被代理后的新对象,它拥有target的一切属性和方法.只不过其行为和结果是在handler中自定义的.
const target = {
someProp: 1
}
const handler = {
get: function(target, key) {
return key in target ?
target[key] :
'Doesn't exist!';
}
}
const proxy = new Proxy(target, handler);
console.log(proxy.someProp) // 1
console.log(proxy.someOtherProp) // Doesn't exist!
2.Proxy的作用
1、 拦截和监视外部对对象的访问
2、 降低函数或类的复杂度
3、 在复杂操作前对操作进行校验或对所需资源进行管理。
代理跟特性很相似,特性是对同一个对象的操作,数据不能在当前属性下存储,存储在备份中,代理是对不同的对象的操作,数据可以直接存储在当前属性下,原对象属性没有发生改变