2013-05-28 11 views
21

JavaScriptでは、次のように文字列を宣言できます。JavaScriptでプリミティブ文字列(文字列リテラル)を "インスタンス化"する方法

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

しかし、Stringのインスタンスではありません...

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

それでは、どのようにタイプまたは "instanceof" 文字列リテラルを見つけるのですか?

JavaScriptは、文字列リテラルごとにnew String()を強制的に作成できますか?

答えて

46

使用typeof "foo" === "string"の代わりinstanceof.

5

代わりにtypeofを使用して、結果の文字列を比較してください。詳細については、docsを参照してください。

+1

これは方法ではありません! – Bergi

+0

ドキュメントリンクありがとうございます。 「instanceof」(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof)も同様です。「instanceof演算子は、オブジェクトのプロトタイプチェーン内のconstructor.prototypeの存在をテストします" – jpaugh

2

新しい文字列を作成するために、new String()を記述する必要はありません。 var x = 'test';ステートメントを書くとき、プリミティブデータ型の文字列としてxを作成します。オブジェクトリテラルと同じように、このカスタムプロパティをxにアタッチすることはできません。すなわち、 x.custom = 'abc';x.customは、未定義の値を与えます。したがって、必要に応じてオブジェクトを作成する必要があります。 new String()は、文字列ではなくtypeof()オブジェクトでオブジェクトを作成します。このオブジェクトにカスタムプロパティを追加できます。

関連する問題