オブジェクトがプロキシのターゲットオブジェクトであることを簡単にアサートできる方法はありますか?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
彼らは同じオブジェクトを参照していることを確認する方法はあります、他のそのオブジェクトを文字列化して再解析?
典型的なユースケース:私は非と、プロキシノードを比較したい
は1をプロキシ。私はプロキシを自分で作成するので、どのような振る舞いが予想されるのか分かります。
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
}
なぜ気になりますか?プロキシが何をしているのかわからない場合、 'target'のように振舞うかもしれません。 – Bergi
@Bergi上記の使用例を参照してください。 – nils
なぜ、 'if(" node.datasetのtarget ... else else? "もちろん、トラップのない内部プロキシを作成するのは無意味です。 – Bergi