元编程:在一个程序的内容、运行环境、配置等都不做任何修改的情况下,可以通过其他程序对其进行读取或修改。
1.使用语法
Proxy以包装器的形式使用。
|
|
2.监听方法
①handler.has
监听程序通过in语句来检查一个字符串或数字是否为该Proxy的目标对象中某个属性的属性键。
注意事项:不能用于被禁用属性拓展的对象。
当被检查的属性键存在于目标对象中,该属性的configurable配置是false时,不能返回false.
②get
Getter只能对已知的属性键进行监听,无法对所有属性读取行为进行拦截。
get监听方法可以拦截和干涉目标对象的所有属性读取行为。
注意事项:当目标对象被读取属性的confgurable和writable属性都为false,监听方法最后返回值必须与目标对象的原属性一致。
③set
用于监听目标对象的所有属性赋值行为。
注意事项:set监听方法需要返回一个布朗值结果,让引擎知道这一次属性赋值 行为是否成功。
④apply
Proxy的目标对象可以是函数(对象的一种),监听其调用行为的属性。
⑤construct
Proxy可以将类作为目标监听对象,并监听其通过new语句来产生新实例的行为,同样可以适用在作为构造器的构造函数上。
注意事项:该监听方法返回的值必须是一个对象。
3.解除监听Proxy对象
proxy.revoke();