Die Funktion noSuchMethod in JavaScript ermöglicht das Abfangen von Aufrufen nicht vorhandener Methoden . Gibt es jedoch einen ähnlichen Mechanismus für Eigenschaften?
ES6-Proxys bieten die Möglichkeit, den Zugriff auf Eigenschaften anzupassen. Wir können dies nutzen, um ein __noSuchMethod__-ähnliches Verhalten für Eigenschaften zu emulieren:
<code class="javascript">function enableNoSuchMethod(obj) { return new Proxy(obj, { get(target, p) { if (p in target) { return target[p]; } else if (typeof target.__noSuchMethod__ == "function") { return function(...args) { return target.__noSuchMethod__.call(target, p, args); }; } } }); }</code>
Hier ist ein Beispiel für die Verwendung des Proxys zur Implementierung einer „Dummy“-Klasse, die unbekannte Eigenschaften verarbeiten kann :
<code class="javascript">function Dummy() { this.ownProp1 = "value1"; return enableNoSuchMethod(this); } Dummy.prototype.test = function() { console.log("Test called"); }; Dummy.prototype.__noSuchMethod__ = function(name, args) { console.log(`No such method ${name} called with ${args}`); }; var instance = new Dummy(); console.log(instance.ownProp1); instance.test(); instance.someName(1, 2); instance.xyz(3, 4); instance.doesNotExist("a", "b");</code>
Das obige ist der detaillierte Inhalt vonWie implementiert man kein solches Methodenverhalten für Eigenschaften mithilfe von Proxys in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!