有沒有簡單的方法來斷言對象是代理的目標對象?ES2015代理服務器:斷言代理服務器與目標對象相同
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
}
你爲什麼要在意?如果你不知道代理的作用,它可能表現得像「目標」或絕對不行。 – Bergi
@Bergi請參閱上面的示例用例。 – nils
爲什麼不寧願'if(「target」in node.dataset)... else'?當然,創建內部代理沒有任何陷阱是毫無意義的。 – Bergi