


Können JavaScript-Proxys dynamische Getter und Setter für undefinierte Eigenschaften erstellen?
Oct 29, 2024 am 04:49 AMDynamische Getter und Setter in JavaScript
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 Originalobjekt enthält eine Eigenschaft example mit dem Wert „value“.
- Der Proxy wird als Fassade für Original erstellt, mit der get()-Handler.
- Der get()-Handler fängt den Eigenschaftszugriff ab. Wenn die Eigenschaft im Original vorhanden ist, wird ihr Wert zurückgegeben. Wenn die Eigenschaft nicht gefunden wird, wird „fehlt“ zurückgegeben.
- Wenn der Wert der Eigenschaft, auf die zugegriffen wird, eine Zeichenfolge ist, wird sie in Großbuchstaben umgewandelt.
- Eigenschaftsänderungen über Proxy werden im Original widergespiegelt.
- Eigenschaften, die im Original nach der Proxy-Erstellung definiert wurden, sind auch über den Proxy zugänglich.
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!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Ersetzen Sie Stringzeichen in JavaScript

JQuery überprüfen, ob das Datum gültig ist

HTTP-Debugging mit Knoten und HTTP-Konsole

Benutzerdefinierte Google -Search -API -Setup -Tutorial

JQuery fügen Sie Scrollbar zu Div hinzu
