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 dekomprimierte Version von mysql5.7.18 starte...
Inhaltsverzeichnis 1. Grundlegende Konzepte 2. En...
Bei der Installation von MySQL sind mir mehrere P...
Was ist ein Containerdatenvolumen? Wenn sich die ...
Klassifizierung von CSS-Stilen 1. Interner Stil -...
Tipps: Die Methode zur Array-Änderung führt zur A...
Wenn wir lernen, Webseiten zu entwickeln, ist das...
Inhaltsverzeichnis 1. So führen Sie stapelweise U...
1. Hintergrund Die Projekte des Unternehmens wurd...
Dieser Artikel stellt Nginx ausführlich vor, von ...
Technischer Hintergrund Latex ist ein unverzichtb...
0. Was ist ein Tag? XML/HTML-CodeInhalt in die Zw...
Inhaltsverzeichnis 1. MySQL aus einer Makroperspe...
Heutzutage ist plattformübergreifende Entwicklung...
WebRTC steht für Web Real-Time Communication und ...