2013-05-28 28 views
21

W JavaScript, mogę zadeklarować ciąg w następujący sposób;Jak "instanceof" pierwotny ciąg (literał ciągu) w JavaScript

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

ale nie jest instancją String ...

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

Jak więc odnaleźć typ "lub" instanceof ciąg dosłowne?

Czy JavaScript może być zmuszony do utworzenia new String() dla każdego literału ciągu?

Odpowiedz

46

użycie typeof "foo" === "string" zamiast instanceof.

5

Zamiast tego należy użyć typeof i porównać wynikowy ciąg. Aby uzyskać szczegółowe informacje, patrz docs.

+1

To nie jest metoda! – Bergi

+0

Dzięki za link do dokumentu; ale [instanceof] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof) jest tak samo istotne: "Operator instanceof sprawdza obecność konstruktora.prototype w łańcuchu prototypów obiektu . " – jpaugh

2

Nie ma potrzeby pisać new String() aby utworzyć nowy ciąg znaków. Kiedy piszemy instrukcję var x = 'test';, tworzymy x jako ciąg z pierwotnego typu danych. Nie możemy dołączyć właściwości niestandardowych do tego x, podobnie jak w przypadku literału obiektowego. to znaczy. x.custom = 'abc';x.custom da niezdefiniowaną wartość. Tak więc, zgodnie z naszą potrzebą, musimy stworzyć obiekt. new String() utworzy obiekt z obiektem typeof(), a nie ciągiem. Możemy dodać niestandardowe właściwości do tego obiektu.