1. Vorteile von Proxy gegenüber Object.definePropertyVorteile eines Proxys:
Vorteile von Object.defineProperty: Gute Kompatibilität: Unterstützt IE9, aber Proxy weist Browser-Kompatibilitätsprobleme auf, die nicht mit Polyfill behoben werden können. Daher gab der Autor von Vue an, dass bis zur nächsten Hauptversion (3.0) gewartet werden müsse, um es mit Proxy neu zu schreiben. 2. Einfache Implementierung eines Proxy-Überwachungsobjekts1. Einfache Implementierung eines Proxy-Objekts```Javascript let data = {}; // Definieren Sie ein leeres Objekt let proxy = new Proxy(data, {}); // Erstellen Sie einen Proxy und verwenden Sie Daten als Zielobjekt // Ändern Sie das Namensattribut des Proxy-Proxy-Objekts proxy.name = 'shelley'; Konsole.log(Proxy); console.log(Daten) // { Name: "Shelley" } // { Name: "Shelley" } ``` 2. Ergänzendes Wissen Reflect Wir müssen ein Reflect.set(...
3. Proxy-MethodeDie Attribute der Methode handler.set() legen den Catcher für die Operation fest. ```Javascript lass Daten = { Name: 'Shelley', Alter: '27' }; let p = neuer Proxy(Daten, { setze(Ziel, Eigenschaft, Wert) { // Ziel = Zielobjekt // Eigenschaft = festgelegte Eigenschaft // Wert = geänderter Wert console.log(Ziel, Eigenschaft, Wert); // { Name: 'shelley', Alter: '27' } Alter 18 gibt Reflect.set(...Argumente) zurück; } }) Seitenalter = 18; console.log(Daten); // { Name: 'shelley', Alter: 18 } ``` - handler.get() Erfassung von Attribut-Lesevorgängen. ```Javascript lass Daten = { Name: 'Shelley', Alter: 22 }; let p = neuer Proxy(Daten, { bekomme(Ziel, Eigenschaft){ console.log(target, prop); //{ Name: 'shelley', Alter: 22 } Alter gibt Reflect.get(...Argumente) zurück; } }) console.log(Seite);//22 ``` Einfache Implementierung des Überwachungsobjekts Object.defineProperty ```Javascript var o = {}; // Neues Objekt erstellen var bValue = 39; // Dem Objekt eine Instanz der Accessor-Deskriptor-Eigenschaft hinzufügen Object.defineProperty(o, 'bValue', { // Dieser Code setzt nicht die Eigenschaften von o, er führt nur get() aus, wenn auf { zugegriffen wird. gibt bValue zurück; }, setze(neuerWert) { console.log('set==>', neuerWert); bWert = neuerWert; } }); console.log(o) // {} // Rufen Sie die Get-Methode der bValue-Eigenschaft des Accessor-Proxys auf, kehren Sie zurück und setzen Sie den Wert von bValue im o-Objekt auf 38 console.log(o.bWert); // 38 // Rufen Sie die Set-Methode der bValue-Eigenschaft des Accessor-Proxys auf und legen Sie den neuen Wert von bValue fest. //Geben Sie get erneut ein und geben Sie return ein. Setzen Sie den Wert von bValue im o-Objekt auf 40. o.bWert = 40; console.log(o.bWert) // 40 ``` Zusammenfassung:
3. Handgeschriebener bidirektionaler Binding-ES6-Proxy für vue3.01. Was ist Proxy
2. Verwenden Sie die bidirektionale Bindung in vue.js```Javascript <div id="app"> <h2>{{msg}}</h2> <Eingabetyp="Text" v-Modell="Nachricht"/> </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <Skript> lass vm = neues Vue({ el: '#app', Daten: { Nachricht: „Shelley“ }, }) </Skript> ``` Proxy vs. Object.definePropertyZweiwegebindung in Vue 2.0, Verwendung von Object.defineProperty() für die Zweiwegebindung Mangel:
– Object.definePorperty() durchläuft rekursiv alle Eigenschaften aller Objekte, was sich bei einer tiefen Datenhierarchie auf die Leistung auswirkt. – Object.definePorperty() kann nur auf Objekten verwendet werden, nicht auf Arrays. – Object.definePorperty() kann die Eigenschaften nur während der Definition überwachen, nicht neu hinzugefügte Eigenschaften. – Da Object.definePorperty() nicht auf Arrays verwendet werden kann, überwacht vue2.0 Array-Daten durch Neuschreiben des Array-Methodenprototyps, kann aber weiterhin keine Änderungen an Array-Indizes und -Längen überwachen. Zweiwegebindung in Vue 3.0, Verwendung von Proxy und Reflect für die Zweiwegebindung Vorteil:
Mangel:
Lösung:
Proxy kann nur eine Ebene proxyen und kann nicht tief überwachen
Dies ist das Ende dieses Artikels über das Prinzip der Proxy-Implementierung der bidirektionalen Vue3-Datenbindung. Weitere relevante Inhalte zur Proxy-Implementierung der bidirektionalen Vue3-Datenbindung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Führen Sie die Schritte zur Installation von Anaconda3 in einer Ubuntu-Umgebung aus
>>: Bedingte Kommentare zur Bestimmung des Browsers (IE-Reihe)
Inhaltsverzeichnis 1. Fehlerphänomen 2. Fehlerana...
Wirkung Derzeit gibt es 2 Projekte (Projekt1, Pro...
Um eine inkrementelle Sicherung der MySQL-Datenba...
Ich werde nächstes Semester MySQL lernen. Ich hab...
Inhaltsverzeichnis Wirkungsdemonstration:Hauptimp...
Vorwort Ich arbeite derzeit an einem hochwertigen...
Inhaltsverzeichnis JS erhält den Inhalt der TXT-D...
Manchmal sehen Sie in der if-Anweisung in JavaScr...
@Font-face grundlegende Einführung: @font-face ist...
yum schnelle MySQL-Installation Yum-Repository hi...
Durch die sogenannte Sliding Door-Technologie läs...
Zabbix 12.10.2019 Chenxin siehe https://www.zabbi...
Inhaltsverzeichnis 【Code-Hintergrund】 【Code-Imple...
Wenn das Token abläuft, aktualisieren Sie die Sei...
Inhaltsverzeichnis 1. Grundlegender Überblick übe...