ECMAScript6-代理

ES6这里,想给所有的JS对象定义一个接口,那么对象是什么呢?①对象都有属性;②对象都有原型;③部分对象是构造函数/普通函数;

那么目前、未来所有的JS对象都有这3个特性的话,那么公共接口就从这3个方面进行入手。所以ECMAScript 标准委员会定义了一个由14种内部方法组成的集合,亦即一个适用于所有对象的通用接口。属性、原型和函数这三种基础功能自然成为它们关注的核心。

1.obj.[[Get]](key,receiver)获取属性值。

当JS代码执行以下方法时被调用:obj.prop或obj[key]。obj是当前被搜索的对象,receiver 是我们首先开始搜索这个属性的对象。

2.obj.[[Set]](key, value, receiver)为对象的属性赋值。

当JS代码执行以下方法时被调用: obj.prop=value或obj[key]=value。

3.obj.[HasProperty]检测对象中是否存在某属性。

当JS代码执行以下方法时被调用:key in obj。

4.obj.[Enumerate]列举对象的可枚举属性。

当JS代码执行以下方法时被调用:for (key in obj)这个内部方法会返回一个可迭代对象,for-in循环可通过这个方法得到对象属性的名称。

5.obj.[GetPrototypeOf]返回对象的原型。

当JS代码执行以下方法时被调用:obj.[__proto__]或Object.getPrototypeOf(obj)。

6.functionObj.[[Call]](thisValue, arguments)调用一个函数。

当JS代码执行以下方法时被调用:functionObj()或x.method()。参数可选的,不是每一个对象都是函数。

7.constructorObj.[[Construct]](arguments, newTarget)调用一个构造函数。

当JS 代码执行以下方法时被调用:new Date(2890, 6, 2)。参数是可选的,不是每一个对象都是构造函数。

var proxy = new Proxy(target, handler);

proxy的行为很简单:将代理的所有内部方法转发至目标,即调用者通过直接调用proxy的方法,来间接调用target方法。

handler对象的方法可以覆写任意代理的内部方法,即如果handler不为空的话,那么调用者直接调用proxy方法,最后还是执行handler覆写后的方法,至于没有覆写的方法最后还是让target来执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值