Hilshire / blog

temporary blog
2 stars 0 forks source link

es6 proxy #1

Closed Hilshire closed 5 years ago

Hilshire commented 5 years ago

参考:

内容由两者复制粘贴而来,所以直接看上面两篇就好😂

语法

let p = new Proxy(target, handler);

handler

  {
    set: function(target, key, value) {},
    get: function(target, key) {}
    // ...
  }

方法

Proxy.revocable() 创建一个可撤销的Proxy对象。

示例

let target = {};
let p = new Proxy(target, {});

p.a = 37;   // 操作转发到目标

console.log(target.a);    // 37. 操作已经被正确地转发

proxy 支持的拦截操作

this 问题

虽然 Proxy 可以代理针对目标对象的访问,但它不是目标对象的透明代理,即不做任何拦截的情况下,也无法保证与目标对象的行为一致。主要原因就是在 Proxy 代理的情况下,目标对象内部的this关键字会指向 Proxy 代理。