Warum sind in JavaScript keine Objekte gleich, außer Strings? [Duplikat]

8

Alles in JS ist ein Objekt. Das habe ich immer gewusst, und das verstehe ich vollkommen. Ich weiß warum {} !== {} . Es sind zwei verschiedene Objekte. So, als würdest du new Object() == new Object() schreiben.

Einige andere Beispiele:

%Vor%

Aber Strings sind auch Objekte (deshalb kannst du ''.replace() machen und sie erweitern), also warum funktioniert das?

%Vor%

Es wäre natürlich sehr schwierig, zwei Strings zu vergleichen, wenn das nicht funktioniert, aber das scheint nicht mit dem Rest der Sprache zu stimmen. Intern, was ist los? Ist es nur ein einmaliges oder gibt es ein anderes Konzept dahinter?

    
Oscar Godson 21.05.2013, 23:36
quelle

3 Antworten

4

JavaScript behandelt Strings und Zahlen im Grunde immer als Skalare, konvertiert sie in Objekte, wenn eine Methode aufgerufen wird, und konvertiert sie zurück, wenn Sie new String("");

nicht ausdrücklich deklarieren

Gleich mit Zahlen.

Ohne die Gleichheit von String / Zahl / Boolean würde es dir schwer fallen, vieles zu tun.

    
Norguard 21.05.2013, 23:46
quelle
3

Es ist einmalig.

Referenz

Es gibt einen Unterschied zwischen String-Literalen und String-Objekten. Der Artikel geht näher, wenn Sie interessiert sind.

Dasselbe gilt für Booleans und Zahlen. Diese Primitiven werden verglichen mit Objekten verglichen.

    
ogc-nick 21.05.2013 23:42
quelle
0

Es gibt fünf primitive Typen in JavaScript: Number, String, Boolean, Undefined und Null. Das Vergleichen des leeren String-Literals "" mit sich selbst unterscheidet sich nicht von dem Vergleich 5 === 5 .

    
Alec Martin 21.05.2013 23:53
quelle

Tags und Links