Zum Beispiel, wenn ich diesen Handler/Proxy (vom MDN example) ...Wie bekomme ich Proxy-Handler vom Proxy-Objekt?
var handler = {
get: function(target, name){
return name in target?
target[name] :
37;
}
};
var p = new Proxy({}, handler);
p.a = 1;
p.b = undefined;
console.log(p.a, p.b); // 1, undefined
console.log('c' in p, p.c); // false, 37
ist es möglich, den Proxy zu sondieren, p
, in irgendeiner Weise, die mich zurück handler
Objekt erhalten können.
Etwas entlang der Linien von:
p.__handler__ // returns handler object -> Object {get: handler.get(), set: handler.set(), ...}
p.__handler__.get // returns get prop/fn of handler -> function(target, name){ ...}
Offensichtlich sind die verschiedenen Fallen im Handler eingerichtet sind noch „bekannt“ an den Proxy, aber gibt es eine klare Möglichkeit, sie zurückzubringen/das Handler vom Proxy selbst? Wenn das so ist, wie?
Ich habe im Moment keinen spezifischen Anwendungsfall, aber ich könnte sehen, dass dies nützlich ist, wenn Sie einen Handler/Traps dynamisch ändern möchten, nachdem Sie bereits einen Proxy haben.
Sie haben zu verwenden, freundlich zu fragen. Wenn der Proxy eine Eigenschaft "__handler__" definiert, wird er auf Ihre Anfrage antworten. – Bergi
Es ist ziemlich der Punkt von Proxies, dass Verbraucher es nicht so kontrollieren dürfen, sie sollten es wie jedes andere Objekt behandeln. Wenn Sie der Ersteller des Proxys sind, ist es eher trivial, einen Verweis auf den 'Handler' zu behalten. – Bergi
@Bergi, es ist komisch für mich, dass der" Point of Proxies "vom Standard auf diese Weise vorgeschrieben wird. Ich denke, idealerweise würde es die Verantwortung des Erstellers des Proxys sein, den Proxy öffentlich/exponiert oder privat zu deklarieren, selbst wenn 95% der Zeit die "richtige" Antwort lautet, dass die Verbraucher sie nicht inspizieren/erweitern können. –