【问题标题】:How to check if we have already created proxy on Object using ObservableSlim?如何检查我们是否已经使用 ObservableSlim 在 Object 上创建了代理?
【发布时间】:2019-04-12 20:04:10
【问题描述】:

我正在使用ObservableSlim 创建代理。

ObservableSlip 的 create 方法会返回一个标准的 ES6 Proxy。

我在这样的对象上创建了一个代理:

const proxy = ObservableSlim.create(model, null, (changes) => {});

问题:

我怎么知道proxyES6 代理

【问题讨论】:

  • @georg 我认为由于 ObservableSlim,它没有被复制。
  • 你觉得还有什么要说的吗?我应该重新打开吗?
  • 是的,您可以重新打开并添加您的评论作为答案。
  • 很公平,完成了。

标签: javascript object es6-proxy


【解决方案1】:

正如here 所述,这在一般情况下是不可能的(至少没有肮脏的黑客攻击),因为Proxy 对象在设计上是透明的,并且在每次系统调用时都会模仿它们的目标。

但是,库作者意识到这有时可能会带来不便,并在其代理对象中提供挂钩,以便用户可以检测到它们。对于有问题的库,返回的 Proxy 公开属性 __isProxy 就是为了这个目的。

【讨论】:

  • 我没有意识到他们的库中有这个功能。感谢您指出。
【解决方案2】:

您不能从代码的角度来看,因为代理是完全透明的。

唯一知道它是代理的是控制台:

 console.log(proxy);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-05
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    相关资源
    最近更新 更多