Frage Wie "instanceof" eine primitive Zeichenfolge (Zeichenfolgenliteral) in JavaScript [doppelt]


Diese Frage hat hier bereits eine Antwort:

In JavaScript kann ich eine Zeichenfolge auf folgende Arten deklarieren:

var a = "Hello World";
var b = new String("Hello World");

aber a ist keine Instanz von String ...

console.log(a instanceof String); //false;
console.log(b instanceof String); //true;

Wie findest du den Typ oder "instanceof"ein String-Literal?

Kann JavaScript gezwungen werden, ein new String() für jedes String-Literal?


24
2018-05-28 12:26


Ursprung


Antworten:


benutzen typeof "foo" === "string" Anstatt von instanceof.


50
2018-05-28 12:29



Benutzen typeof Stattdessen vergleichen Sie einfach die resultierende Zeichenfolge. Sehen Dokumente für Details.


5
2018-05-28 12:29



Es besteht keine Notwendigkeit zu schreiben new String() um eine neue Zeichenfolge zu erstellen. Wenn wir schreiben var x = 'test'; Aussage, es schafft die x als eine Zeichenfolge aus einem primitiven Datentyp. Wir können die benutzerdefinierten Eigenschaften nicht anhängen x wie wir es mit dem Objektliteral machen. dh. x.custom = 'abc';  x.custom wird einen unbestimmten Wert geben. So müssen wir nach unserem Bedarf das Objekt erschaffen. new String() erstellt ein Objekt mit typeof() Objekt und keine Zeichenfolge. Wir können diesem Objekt benutzerdefinierte Eigenschaften hinzufügen.


2
2018-05-28 12:52