实例:Web 服务的客户端

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

  1. const service = createWebService('http://example.com/data');
  2. service.employees().then(json => {
  3. const employees = JSON.parse(json);
  4. // ···
  5. });

上面代码新建了一个 Web 服务的接口,这个接口返回各种数据。Proxy 可以拦截这个对象的任意属性,所以不用为每一种数据写一个适配方法,只要写一个 Proxy 拦截就可以了。

  1. function createWebService(baseUrl) {
  2. return new Proxy({}, {
  3. get(target, propKey, receiver) {
  4. return () => httpGet(baseUrl + '/' + propKey);
  5. }
  6. });
  7. }

同理,Proxy 也可以用来实现数据库的 ORM 层。