Nach der Definition des [[Call]] internal method of Proxy objects sollte es funktionieren:
Allerdings gibt es ein Problem: Nicht alle Proxy-Objekte haben die [[Aufruf]] Methode:
Ein Proxy exotisches Objekt hat nur einen [[Aufruf]] interne Methode, wenn die Anfangswert seiner [[ProxyTarget]] internal slot ist ein Objekt, das eine interne Methode [[Call]] hat.
Daher muss das Ziel ein Funktionsobjekt sein:
var target =() => {},
handler = { apply:() => 42 }
proxy = new Proxy(target, handler);
proxy(); // 42
Bitte beachte, dass ich target
mit einem Pfeil Funktion, um ein Funktionsobjekt zu erstellen definiert, die nicht eine Konstruktorfunktion ist. Auf diese Weise kann das Proxy-Objekt zwar aufgerufen, aber nicht instanziiert werden.
Wenn Sie auch eine "Konstrukt" -Falle hinzufügen möchten, muss das Ziel eine [[Construct]] - Methode haben, also definieren Sie es mit einer Funktionsdeklaration oder einem Funktionsausdruck.
vielleicht verwandt: [Making ein Objekt (nicht) aufrufbar] (http://stackoverflow.com/q/29680473/1048572) – Bergi