Frage:
Während Standard-JavaScript die Erstellung von Gettern und Settern ermöglicht Ist es für bestimmte Eigenschaften möglich, Catch-All-Getter und -Setter zu erstellen, die alle nicht explizit definierten Eigenschaftsnamen verarbeiten?
Antwort:
Ja, JavaScript-Unterstützung für dynamische Getter und Setter wurden in der ES2015-Spezifikation durch die Verwendung von Proxys eingeführt. Proxys erstellen Wrapper-Objekte, die Eigenschaftszugriffe und -änderungen abfangen und so benutzerdefiniertes Verhalten ermöglichen.
Implementierung:
Hier ist ein Beispiel-Proxy, der String-Eigenschaftswerte in Großbuchstaben umwandelt und „ fehlt“ für undefinierte Eigenschaften:
<code class="js">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"; } });</code>
Verwendung:
<code class="js">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>
Hinweis:
Proxy-Unterstützung wird berücksichtigt Browserübergreifend kompatibel und wird von allen gängigen modernen Browsern unterstützt.
Das obige ist der detaillierte Inhalt vonKönnen JavaScript-Proxys dynamische Getter und Setter für jede Eigenschaft aktivieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!