【ES6】ES6的重要的13种新特性之Proxy

元编程:在一个程序的内容、运行环境、配置等都不做任何修改的情况下,可以通过其他程序对其进行读取或修改。

1.使用语法

Proxy以包装器的形式使用。

1
2
3
4
const obj = {};
const proxy = new Proxy(obj,{
//...
})

2.监听方法

①handler.has

监听程序通过in语句来检查一个字符串或数字是否为该Proxy的目标对象中某个属性的属性键。

1

注意事项:不能用于被禁用属性拓展的对象。

​ 当被检查的属性键存在于目标对象中,该属性的configurable配置是false时,不能返回false.

②get

Getter只能对已知的属性键进行监听,无法对所有属性读取行为进行拦截。

get监听方法可以拦截和干涉目标对象的所有属性读取行为。

2

注意事项:当目标对象被读取属性的confgurable和writable属性都为false,监听方法最后返回值必须与目标对象的原属性一致。

③set

用于监听目标对象的所有属性赋值行为。

3

注意事项:set监听方法需要返回一个布朗值结果,让引擎知道这一次属性赋值 行为是否成功。

④apply

Proxy的目标对象可以是函数(对象的一种),监听其调用行为的属性。

4

⑤construct

Proxy可以将类作为目标监听对象,并监听其通过new语句来产生新实例的行为,同样可以适用在作为构造器的构造函数上。

5

注意事项:该监听方法返回的值必须是一个对象。

3.解除监听Proxy对象

proxy.revoke();

附代码地址:https://github.com/JoseyDon/ES6-demo