Heim  >  Artikel  >  Web-Frontend  >  Können JavaScript-Proxys dynamische Getter und Setter für jede Eigenschaft aktivieren?

Können JavaScript-Proxys dynamische Getter und Setter für jede Eigenschaft aktivieren?

Linda Hamilton
Linda HamiltonOriginal
2024-11-02 02:58:30386Durchsuche

Can JavaScript Proxies Enable Dynamic Getters & Setters for Any Property?

Dynamische Getter und Setter in JavaScript implementieren

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn