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

Anwendung von Hadoop-Zählern und Datenbereinigung

Datenbereinigung (ETL) Vor dem Ausführen des MapR...

So verstehen Sie SELinux unter Linux

Inhaltsverzeichnis 1. Einführung in SELinux 2. Gr...

Tutorial zu HTML-Formular-Tags (4):

Nehmen Sie nun an, dass Sie dem Formular ein Elem...

Beispiel für die Verwendung von #include-Dateien in HTML

Es gibt zwei Dateien a.htm und b.htm. Im selben Ve...

Detaillierte Einführung in den MySQL Innodb Index-Mechanismus

1. Was ist ein Index? Ein Index ist eine Datenstr...

Verwenden Sie momentJs, um eine Countdown-Komponente zu erstellen (Beispielcode)

Heute möchte ich einen Countdown von Vue und Mome...

Detaillierte Erläuterung der Komponentenentwicklung des Vue-Dropdown-Menüs

In diesem Artikelbeispiel wird der spezifische Co...

Beim Hochladen von Bildern mit Axios in Vue sind Probleme aufgetreten

Inhaltsverzeichnis Was ist FormData? Eine praktis...

Verwendung der MySQL-Zeitdifferenzfunktionen TIMESTAMPDIFF und DATEDIFF

Verwendung der Zeitdifferenzfunktionen TIMESTAMPD...

Fünf Möglichkeiten zum Durchlaufen von Objekten in JavaScript Beispielcode

Inhaltsverzeichnis Vorbereiten Fünf Waffen für … ...

So zeigen Sie die IP-Adresse von Linux in einer virtuellen VMware-Maschine an

1. Doppelklicken Sie zunächst auf das VMware-Symb...