什么是代理?
原理:
代理(proxy)是es6新增的功能,可以用来自定义对对象操作的结果。在官方文档中对Proxy
的解释是:
Proxy 对象用于定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等)。
也就是说:Proxy
对象就是可以让你去对JavaScript中的一切合法对象的基本操作进行自定义.然后用你自定义的操作去覆盖其对象的基本操作.也就是当一个对象去执行一个基本操作时,其执行的过程和结果是你自定义的,而不是对象的。
其实也可以理解为拦截操作,当你对对象作出某些行为,代理会先拦截下来,然后执行代理里自定义的方法。通俗点就是不管你做啥操作,只要被我拦截了,你就得听我的话,执行我的操作,哪怕是拦截下来啥也不做。
语法:
首先Proxy的语法是:
let pox = new Proxy(target, handler);
其中有
-
target
是你要代理的对象.它可以是JavaScript中的任何合法对象.如: (数组, 对象, 函数等等) -
handler
是你要自定义操作方法的一个集合. -
pox
是一个被代理后的新对象,它拥有target
的一切属性和方法.只不过其行为和结果是在handler
中自定义的
让我们看看例子解析