Heim >Web-Frontend >js-Tutorial >Warum sind zwei identische JavaScript-Objekte ungleich?
Die Verwirrung der Objektgleichheit
Obwohl zwei scheinbar identische Objekte identische Eigenschaften aufweisen, bleiben sie in JavaScript ungleich. Dieses Phänomen hat angesichts des folgenden Codeausschnitts viele verwirrt:
var a = {}; var b = {}; console.log(a==b); //returns false console.log(a===b); //returns false
Gleichheitsoperatoren verstehen
Die Diskrepanz zwischen den Ergebnissen der regulären (==) und strengen (===) Gleichheitsoperatoren liegen in der Typkonvertierung. Bei regulärer Gleichheit wird eine implizite Typkonvertierung durchgeführt, bei strikter Gleichheit jedoch nicht. In diesem Fall sind jedoch beide Variablen Objekte, sodass die Typkonvertierung irrelevant ist.
Objektidentität
Objektvergleiche werden nur dann als wahr ausgewertet, wenn dieselbe Objektreferenz verglichen wird. unabhängig vom verwendeten Gleichheitsoperator. Mit anderen Worten, a == a, a == b (wenn b ein Alias von a ist), aber a != c (wenn c ein anderes Objekt ist).
Implikationen
Dieses einzigartige Verhalten hat Auswirkungen auf die objektorientierte Programmierung. Zwei Objekte mit identischen Eigenschaften, aber unterschiedlichen Referenzen gelten als ungleich, auch wenn sie dieselbe reale Entität darstellen.
Zum Beispiel repräsentieren in einer Datenbank zwei Objekte dieselbe Person mit demselben Namen, derselben Adresse usw Telefonnummern würden nicht als gleich angesehen, da sie unterschiedliche Objektreferenzen haben. Dies kann zu verwirrenden Ergebnissen beim Durchführen von Objektvergleichen führen.
Lösungen
Wenn ein Vergleich der Eigenschaften zweier Objekte erforderlich ist, erwägen Sie die Verwendung einer Bibliothek eines Drittanbieters oder die Implementierung einer Benutzerdefinierte Vergleichsfunktion, die jede Eigenschaft einzeln prüft.
Das obige ist der detaillierte Inhalt vonWarum sind zwei identische JavaScript-Objekte ungleich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!