So implementieren Sie eine einfache Datenüberwachung mit JS

So implementieren Sie eine einfache Datenüberwachung mit JS

Überblick

Verwenden Sie hauptsächlich Object.defineProperty, um eine Datenbindung ähnlich wie vue zu implementieren.

erster Schritt

const Daten = {
  Name: "tom",
  Alter: 14
}
Objekt.defineProperty(Daten, "Name", {
  erhalten(){
    return "Name wurde gelesen"
  },
 setze(Wert){
   console.log('Mir wurde zugewiesen',val)
 }
})
//Geben Sie diesen Code in die Browserkonsole ein, um den Effekt anzuzeigen console.log(data.name)

Die Ausgabe „data.name“ lautet nicht „tom“, aber „name“ wird gelesen, weil „defineProperty“ das Namensfeld der Daten überwacht und entführt und den Wert ändert, den das Namensfeld hätte zurückgeben sollen.

Schritt 2

const _data = { ...data }
für (lass i in Daten) {
  Objekt.defineProperty(Daten, i, {
    erhalten(){
      return _data[i]+"geändert durch js"
    },
    setze(Wert){
      _Daten[i] = Wert;
    }
  })
}

Warum werden separate _Daten benötigt?

Antwort: Das Datenfeld wird überwacht und das Rückgabeattribut des Felds wird geändert. Die daraus resultierende Auswirkung besteht darin, dass der Browser jedes Mal, wenn das überwachte Feld in Daten abgerufen wird, den von get zurückgegebenen Wert aufruft. Wenn Sie in get direkt return data[i] zurückgeben, ruft der Browser kontinuierlich die get-Methode auf und gerät so in eine Endlosschleife.

Fügen Sie den Daten etwas mehr Daten hinzu

const Daten = {
  Name: "tom",
  Alter: 14,
  Freund:
        "name1": "Zhang San",
        "name2": "Li Si",
        "name3": "Wang Wu",
        "name4": "Zhao Liu"
  },
}

Formatierung des Anfangswertes

const createNewWatch = (Wert, Pfad, übergeordneter Schlüssel, Ereignis) => {
       //Wenn der Wert nicht vom Objekttyp ist, geben Sie den Wert direkt zurück, if(typeof val != 'object') return val;
       //Wenn es hingegen vom Typ „Objekt“ ist, rufen Sie WatchObject auf, um die untergeordneten Elemente zu durchlaufen und zu überwachen. //WatchObject wird im folgenden Code erstellt: return WatchObject(val,path.concat(parentKey), event)
    }
Markendesignunternehmen aus Guangzhou https://www.houdianzi.com

Objekt formatieren und Wert überwachen

const WatchObject = (Daten, Pfad, Ereignis) => {
  Funktion WatchObject(){
    für (var Schlüssel in Daten) {
        //Rufen Sie die zuvor erstellte Funktion auf, um den Wert zu formatieren
        Daten[Schlüssel] = createNewWatch(Daten[Schlüssel], Pfad, Schlüssel, Ereignis)
        //Erstellen Sie einen Listener für den Datenschlüssel defineProperty(this, key, data[key], path.concat(key), event)
    }
  }
  gibt neues WatchObject zurück()
}

Zum Abschluss führen Sie den Code aus und schon ist eine einfache Datenüberwachung abgeschlossen.

const b = WatchObject(Daten,[],{ 
    setze(Pfad,Wert){ 
      console.log(Pfad,Wert) 
    } 
})

Oben finden Sie Einzelheiten zur Verwendung von JS zur Implementierung einer einfachen Datenüberwachung. Weitere Informationen zur JS-Datenüberwachung finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • So überwachen Sie das Div-Größenänderungsereignis in JS
  • Schlüsselideen und Codeimplementierung für die Kombination von JavaScript-Überwachung
  • So überwachen Sie Tastatureingaben und Mausklicks in JavaScript
  • Mehrere Möglichkeiten zum Erstellen von WebSocket-Listenern in NodeJS (drei)
  • Detaillierte Erläuterung des Beispielcodes zur Überwachung von URL-Änderungen ohne Aktualisierung in js
  • JavaScript überwacht die Codeimplementierung von Tastaturereignissen
  • Verwenden Sie JS, um auf Keydown-Ereignisse zu warten
  • js implementiert Überwachungscode zur Überwachung von Datenänderungen
  • Detaillierte Erläuterung der Beispiele für JavaScript-Ereignisüberwachung und Ereignisdelegierung

<<:  MySQL-Ansichtsprinzipien und grundlegende Bedienungsbeispiele

>>:  So installieren Sie Oracle auf Windows Server 2016

Artikel empfehlen

Nginx-Praxis zur Optimierung hoher Parallelität

1. Notwendigkeit des Tunings Ich habe mich immer ...

Problem mit der Parameterübergabe beim Sprung auf HTML-Seite

Die Wirkung ist wie folgt: eine Seite Nach dem Kl...

MySQL Serie 8 MySQL Server-Variablen

Tutorial-Reihe MySQL-Reihe: Grundlegende Konzepte...

Eine kurze Erläuterung zum Anpassen der Hostdatei in Docker

Inhaltsverzeichnis 1. Befehl 2. docker-compose.ym...

JS erzielt Fünf-Sterne-Lobeffekt

Verwenden Sie JS, um objektorientierte Methoden z...

So verwenden Sie Nginx, um einen RTMP-Liveserver auszuführen

Dieses Mal haben wir einen RTMP-Liveübertragungss...