Heim > Web-Frontend > js-Tutorial > 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
Freigeben: 2024-11-02 02:58:30
Original
510 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage