如何检查我们是否已经使用 ObservableSlim 在 Object 上创建了代理?

How to check if we have already created proxy on Object using ObservableSlim?

我正在使用 ObservableSlim 创建代理。

The create method of ObservableSlip will return a standard ES6 Proxy.

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

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

问题:

我怎么知道 proxyES6 Proxy

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

唯一知道它是 Proxy 的是控制台:

 console.log(proxy);

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

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