ES6 proxy

基本概念

ECMAScript标准委员会定义了一个由14种内部方法组成的集合,亦即一个适用于所有对象的通用接口。而proxy的存在即是为了覆写这些内部方法。

代理方式:

var target={}.handle={};

var proxy=new Proxy(target,handle);

注意:

(1)用Proxy代理的对象调用方法中的this指向Proxy

(2)Proxy.revocable方法能够取消代理,该方法返回的对象包含一个.proxy属性和一个.revoke方法。调用revoke方法能够取消.proxy指向的Proxy实例

let {proxy,revoke}=Proxy.revocable(target,handler);

API

->MDN Proxy(同样定义了14中方法,与14种内部方法一一对应)

API中的注意事项

get(target, propKey, receiver) | set(target, propKey, value, receiver)

receiver 是我们首先开始搜索这个属性的对象。有时我们必须要搜索几个对象,obj可能是一个在receiver原型链上的对象。

has(target, propKey)

has方法拦截的是HasProperty操作,而不是HasOwnProperty操作,虽然for...in循环也用到了in运算符,但是has拦截对for...in循环不生效。ownKeys方法拦截for...in循环。

construct(target, args)

newTarget指向创造实例对象时,new命令作用的构造函数

 

posted @ 2018-09-03 12:46  CodingSherlock  阅读(91)  评论(0编辑  收藏  举报