Einführung:
JavaScript bietet flexible Mechanismen für den Zugriff und die Änderung von Eigenschaften durch Getter und Setter. Obwohl bekannt ist, wie Getter und Setter für vordefinierte Eigenschaftsnamen definiert werden, stellt sich die Frage: Ist es möglich, dynamische Getter und Setter zu implementieren, die für undefinierte Eigenschaftsnamen gelten?
Dynamische Getter und Setter mit Proxys (ES6):
Seit ES2015 führt JavaScript Proxys ein, die die Erstellung von Objekten ermöglichen, die als „Fassaden“ für andere Objekte fungieren. Dies ermöglicht das Abfangen und Ändern von Eigenschaftsoperationen, einschließlich Gettern und Settern.
Beispiel:
Der folgende Codeausschnitt demonstriert dynamische Getter und Setter mithilfe von Proxys:
<code class="javascript">"use strict"; if (typeof Proxy == "undefined") { throw new Error("This browser doesn't support Proxy"); } let original = { example: "value", }; let proxy = new Proxy(original, { get(target, name, receiver) { if (Reflect.has(target, name)) { let rv = Reflect.get(target, name, receiver); if (typeof rv === "string") { rv = rv.toUpperCase(); } return rv; } return "missing"; } }); console.log(`original.example = ${original.example}`); // "original.example = value" console.log(`proxy.example = ${proxy.example}`); // "proxy.example = VALUE" console.log(`proxy.unknown = ${proxy.unknown}`); // "proxy.unknown = missing" original.example = "updated"; console.log(`original.example = ${original.example}`); // "original.example = updated" console.log(`proxy.example = ${proxy.example}`); // "proxy.example = UPDATED"</code>
In diesem Beispiel:
Das obige ist der detaillierte Inhalt vonKönnen JavaScript-Proxys dynamische Getter und Setter für undefinierte Eigenschaften erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!