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
Die Ausführungsreihenfolge der SQL-Abfrageanweisu...
Erstellen von Tabellendaten CREATE TABLE `praise_...
<!DOCTYPE html> <html lang="de"...
1. Formular 1. Die Rolle des Formulars HTML-Formu...
Code kopieren Der Code lautet wie folgt: <!-- ...
In diesem Artikel finden Sie das Installations- u...
Detaillierte Erklärung der tinyMCE-Verwendung Ini...
Der Browser ist für uns wahrscheinlich das vertra...
Inhaltsverzeichnis Was ist die Listener-Eigenscha...
Vorwort Im vorherigen Artikel wurde die Installat...
In letzter Zeit muss ich im Projekt viele fragmen...
Anweisung 1: <link rel="Shortcut-Symbol&qu...
In die CSS-Datei schreiben Code kopieren Der Code ...
Der folgende Inhalt stellt den Prozess und die Lö...
Vorwort Sehen wir uns zunächst an, wie eine TCP-V...