1. Was ist ein Proxy?Das Proxy-Objekt wird verwendet, um bestimmte Vorgänge des Zielobjekts abzufangen und zu ändern. // Syntax const p = neuer Proxy(Ziel, Handler)
2. Wie wird es verwendet?1. Einfaches Beispiel für die Verwendung von ProxyBeim Zugriff auf eine nicht vorhandene Eigenschaft wird der Standardwert „return“ (zurückgeben) anstelle von „undefiniert“ festgelegt. // 1. Suchen Sie einen geeigneten Handler und schreiben Sie den Code const handler = { bekomme: Funktion(Objekt, Eigenschaft) { Gibt Eigenschaft in Objekt zurück? Objekt[Eigenschaft]: 37; } }; // 2. Erstellen Sie ein neues Proxy-Objekt const p = new Proxy({}, handler); // 3. Operation ausführen pa = 1; pb = undefiniert; // 4. Überprüfen Sie die Ergebnisse console.log(pa, pb); // 1, undefiniert console.log('c' in p, pc); // falsch, 37 2. Das Zielobjekt wird korrekt geändertlass Ziel = {}; lass p = neuer Proxy(Ziel, {}); pa = 37; // Die Operation wird an das Ziel weitergeleitet console.log(target.a); // 37. Die Operation wurde korrekt weitergeleitet 3. Verwenden Sie Set-Handler zur Datenvalidierunglet validator = { setze: Funktion(Objekt, Eigenschaft, Wert) { wenn (Eigenschaft === 'Alter') { wenn (!Number.isInteger(value)) { throw new TypeError('Das Alter ist keine Ganzzahl'); } wenn (Wert > 200) { throw new RangeError('Das Alter scheint ungültig zu sein'); } } // Das Standardverhalten zum Speichern des Wertes obj[Eigenschaft] = Wert; // Zeigt Erfolg an return true; } }; let person = neuer Proxy({}, Validator); Person.Alter = 100; Konsole.log(Person.Alter); // 100 Person.Alter = "jung"; // Löst eine Ausnahme aus: Nicht abgefangener TypeError: Das Alter ist keine Ganzzahl Person.Alter = 300; // Löst eine Ausnahme aus: Uncaught RangeError: Das Alter scheint ungültig 4. Erweiterter KonstruktorFunktion erweitern(sup, base) { var descriptor = Object.getOwnPropertyDescriptor( base.prototype, "Konstruktor" ); base.prototype = Objekt.erstellen(sup.prototype); var handler = { Konstrukt: Funktion(Ziel, Argumente) { var obj = Objekt.create(base.prototype); dies.anwenden(Ziel, Objekt, Argumente); gibt Objekt zurück; }, anwenden: Funktion(Ziel, das, Argumente) { sup.apply(das, args); base.apply(das, Argumente); } }; var Proxy = neuer Proxy (Basis, Handler); Deskriptor.Wert = Proxy; Object.defineProperty(base.prototype, "Konstruktor", Deskriptor); Proxy zurückgeben; } var Person = Funktion (Name) { dieser.name = Name }; var Junge = erweitern(Person, Funktion (Name, Alter) { dieses.Alter = Alter; }); Junge.Prototyp.Geschlecht = "M"; var Peter = neuer Junge("Peter", 13); console.log(Peter.sex); // "M" console.log(Peter.name); // "Peter" console.log(Peter.age); // 13 ZusammenfassenDieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalt auf 123WORDPRESS.COM lesen können! Das könnte Sie auch interessieren:
|
<<: Schriftreferenzen und Übergangseffekte außerhalb des Systems
>>: Einführung in die Verschlüsselung des Grub-Boot-Programms in Linux
Was ist ein Selektor? Die Rolle des Selektors bes...
1. Zeitformatierung und andere Methoden Es wird e...
Vorwort Ich habe mir die zuvor veröffentlichten A...
Vorwort In der Demonstration [IE9-] ist der Farbv...
1. Wie entferne ich den leeren Bereich von einigen...
Betriebssystem: Win7 64-Bit Ultimate Edition Komp...
Vorwort 1. Die in diesem Artikel verwendeten Tool...
Batchkommentare in SQL Server Batch-Annotation St...
Einführung in Nginx Nginx ist ein leistungsstarke...
1. Downloadadresse für das Flash-Plug-in-Paket: h...
Das sogenannte Favicon, die Abkürzung für Favorite...
Die EXPLAIN-Anweisung liefert Informationen darüb...
Was ist eine Tabelle? Eine Tabelle ist eine HTML-...
Inhaltsverzeichnis 1. Ergebnisse erzielen 2. Back...
Inhaltsverzeichnis 1. Standort / Matching 2. Stan...