1

今日チュートリアルを見ていると、次のことがわかりました。

var q2Var1 = "hi there.",
    q2Var2 = String( "another string here." );

q2Var は「コンストラクター表記」であり、q2Var は変数を宣言するための「リテラル表記」ですか、それとも正しい結論を導き出していませんか?

ありがとうございました。

4

2 に答える 2

3

いいえ、どちらもコンストラクタを使用して文字列オブジェクトを作成しません。

1つ目は単なる文字列プリミティブで、2つ目はString変換関数を介して送信される文字列プリミティブであり、文字列プリミティブは変更されずに返されます。


変換関数は通常、他のものを文字列プリミティブに変換するために使用されます。Stringたとえば、数値は次のとおりです。

var s = String(42);

Stringオブジェクトを作成するには、次のnewキーワードを使用します。

var s = new String("hi there.");

Stringオブジェクトには、プロパティなど、文字列で使用するために使用されるすべてのメソッドがありますlength。文字列プリミティブでも使用できる理由はString、メソッドを使用すると自動的にオブジェクトに変換されるためです。

したがって、この:

var l = "asdf".length;

実際には次と同じように動作します。

var l = new String("asdf").length;

変換関数はString常に文字列プリミティブを返すため、Stringオブジェクトがある場合、関数はそれを文字列プリミティブに戻します。

var s = "asdf"; // typeof s returns "string"

var s = new String(s); // typeof s now returns "object"

s = String(s); // typeof s now returns "string"
于 2012-09-27T19:43:05.683 に答える
0

これらの名前は聞いたことがありませんが、引数を String のコンストラクターに渡すため、「コンストラクター表記法」は q2Var2 である可能性が最も高いでしょう。でも、どう呼ぶかはあまり重要じゃないですよね?:P

于 2012-09-27T19:37:30.087 に答える