今日チュートリアルを見ていると、次のことがわかりました。
var q2Var1 = "hi there.",
q2Var2 = String( "another string here." );
q2Var は「コンストラクター表記」であり、q2Var は変数を宣言するための「リテラル表記」ですか、それとも正しい結論を導き出していませんか?
ありがとうございました。
今日チュートリアルを見ていると、次のことがわかりました。
var q2Var1 = "hi there.",
q2Var2 = String( "another string here." );
q2Var は「コンストラクター表記」であり、q2Var は変数を宣言するための「リテラル表記」ですか、それとも正しい結論を導き出していませんか?
ありがとうございました。
いいえ、どちらもコンストラクタを使用して文字列オブジェクトを作成しません。
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"
これらの名前は聞いたことがありませんが、引数を String のコンストラクターに渡すため、「コンストラクター表記法」は q2Var2 である可能性が最も高いでしょう。でも、どう呼ぶかはあまり重要じゃないですよね?:P