ES2015代理:断言代理与目标对象相同

时间:2017-05-05 12:49:23

标签: ecmascript-6 es6-proxy

是否有一种简单的方法可以断言对象是代理的目标对象?

const o = {};
const p = new Proxy(o, {});

平等运营商似乎不起作用,as outlined in this paper on page 6

o == p; // false
o === p; // false
const q = new Proxy(o, {});
p === q; // false

有没有办法验证它们是否引用同一个对象,除了字符串化和重新分析对象之外?

示范用例:

我想将代理节点与非代理节点进行比较。由于我自己创建代理,因此我知道会发生什么样的行为。

const nodeList = new Proxy(document.querySelectorAll('div'), {
  get(target, key) { return new Proxy(target[key], {}); }
});

const specificNode = document.querySelector('div[data-target]');

for (const node of nodeList) {
  if (node === specificNode) { doSomethingElse(); } // Never happens, even if specificNode is in the nodeList
}

0 个答案:

没有答案
相关问题