ES6代理的主要用例

Ade*_*uyi 4 javascript proxy ecmascript-6 es6-proxy

我最近了解了ES6代理,但我没有看到使用它的充分理由.我的意思是,除非我遗漏了什么,否则可以在没有它的情况下完成所有可以使用Proxy的事情.

例如,大多数人谈论代理时的验证,但可以应用一些JS优点来验证,每个人都很好.如果有人可以睁开眼睛看看代理的一些主要用例,我将不胜感激.谢谢!

T.J*_*der 15

我的意思是,人们可以用代理做的每一件事都可以在没有它的情况下完成......

这不是真的.

考虑捕获对不存在的属性的访问的常见需求:

const o = {foo: "bar"};
console.log(o.blarg);
Run Code Online (Sandbox Code Playgroud)

通常希望以默认的方式处理它,即记录undefined.代理让我们通过get陷阱来做到这一点.例:

const o = {foo: "bar"};
const p = new Proxy(o, {
  get(target, prop, receiver) {
    return prop in target ? target[prop] : "nifty!";
  }
});
console.log(p.foo);
console.log(p.blarg);
Run Code Online (Sandbox Code Playgroud)

另一个例子是能够挂钩获取对象属性列表的各种操作.没有代理就没有办法挂钩.使用 Proxy,很容易:根据要挂钩的内容,使用has陷阱ownKeys陷阱.

就其他用例而言:代理是实现Facade模式的终极工具.查看Facade的用例,您将找到Proxy的用例.

  • 我清楚地看到我在这里缺少什么;外观帮助很大。谢谢! (2认同)