Was würde der Grund dafür sein, dass irgendein Framework oder jemand jemals String / Number / Boolean-Objekt anstelle der primitiven Versionen verwenden müsste? [Duplikat]

9

Zum Beispiel müssen wir new RegExp() anstelle des regex-Literals verwenden, wenn wir den regex-Ausdruck dynamisch berechnen müssen.

Aber genau was sind die Kantenfälle wenn jemand jemals String / Number / Boolean Objekte im Gegensatz zu ihren primitiven Versionen benutzen muss? (weil ich nicht einmal daran denken kann, wo es jemals gebraucht wird)

    
Pacerier 09.08.2011, 23:42
quelle

1 Antwort

1

A String ist ein Object , aber es existiert die primitive Version, die als Literal mit 'Hello' erstellt wird (und bei weitem am häufigsten verwendet wird).

Leute benutzen manchmal new String() , um einen anderen Typ in eine String umzuwandeln, zum Beispiel in eine Funktion.

%Vor%

Führende Nullen sind in Number nicht signifikant, daher muss es ein String sein.

Ich hätte es aber trotzdem vorgezogen, das Number a String durch Verkettung mit einem leeren String ( '' ) zu machen.

%Vor%

Dies ruft implizit toString() von Number auf und gibt eine String primitive zurück.

  

Ich habe gelesen, dass Leute sagen, dass hey typeof foo==="string" nicht narrensicher ist, denn wenn die Zeichenkette mit new String erstellt wird, gibt uns typeof object .

Sie können eine narrensichere isString() methode wie so machen ...

%Vor%

jsFiddle .

Dies funktioniert in einer multi window Umgebung. Sie könnten auch die constructor Eigenschaft überprüfen, aber dies schlägt in einer multi window Umgebung fehl.

Siehe auch Kommentare von Felix Kling zu dieser Antwort.

    
alex 09.08.2011 23:46
quelle

Tags und Links