1.代理:
调用new创建一个目标(target)对象一直的虚拟化对象;该代理会拦截底层代码的操作,从而修改内置行为;这些底层操作被拦截后会触发处理程序对象的方法。注:目标和处理程序对象的方法必须一致才会触发;目标和代理之间存在一个相互引用。
2.作用:
提供了修改底层实现的方式,可在代理对象上进行一些操作,为我们访问对象制定一些规则,就像代理服务器可以过滤某些服务器的访问等功能。
3.结构:
new Proxy(目标对象,是一个对象,是一个对象它为obj对象制定了一些规章制度)
4.特点:
(1)目标和代理之间是引用关系,因此给目标属性赋值会反应在两个对象上。
(2)hasOwnPerperty()方法都会应用到目标对象上。
(3)不能使用instanceof,因为Proxy.prototype是undefined。
(4)严格相等 === 可以用来区分代理和目标。
5.捕获器:
修改默认对象,当触发代理对象时,才会触发捕获器。
6.捕获器参数:
(1)比如get()捕获器:会接收到目标对象、要查询的属性和代理对象三个参数。基于这写参数可以重建被捕获方法的原始行为,那么重建原始行为使用全局Relect对象上的同名方法来轻松重建。
(2)捕获器的所有方法都有对应的反射(Reflect)API方法,这些方法与捕获器拦截的方法具有相同的名称和函数名称和函数签名,而且也具有与拦截方法相同的行为。
(3)捕获所有的方法。
(4)撤销代理:
revocable(),撤销后不可再次调用。
11.9----代理-----代理基础
最新推荐文章于 2021-12-09 09:12:24 发布