2018-01-17 ES6 阮一峰教程摘记9 Proxy

2018-09-10  本文已影响0人  安乐_f487

Proxy(代理器)

1.概述

用于修改某些操作的默认行为(等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程)

可以理解为:在目标对象之前设置一层‘拦截’,访问对象前都必须经过这一层,因此,这提供了一种机制,可以对外界的访问进行过滤、改写

例子如下:

Proxy实际重载了点运算符

es6提供了Proxy构造函数,用来生成Proxy实例;例如:var proxy=new Proxy(target,handler);

参数target:所要拦截的目标对象;

参数handler:定制(描述)拦截行为的对象

Proxy实例作为其他对象的原型对象的例子

Proxy支持的可以拦截的操作一共有13种,即对应下面的Proxy实例的方法。

注意点

2.Proxy实例的方法

get(),set(),apply(),has(),construct(),deleteProperty(),defineProperty(),getOwnPropertyDescriptor(),getPrototypeOf(),isExtensible(),ownKeys(),preventExtensions(),setPrototypeOf()

3.Proxy.revocable()

返回一个可取消的Proxy实例

可取消的代理

4.this问题

在Proxy代理的情况下,目标对象内部的this关键字会指向Proxy代理

5.实例:web服务的客户端

Proxy 对象可以拦截目标对象的任意属性,这使得它很合适用来写 Web 服务的客户端。

Proxy 可以拦截这个对象的任意属性,所以不用为每一种数据写一个适配方法,只要写一个 Proxy 拦截就可以了。

上一篇下一篇

猜你喜欢

热点阅读