43

JavaScriptにはプリミティブ型とオブジェクト型がある.

九章第七回 プリミティブとオブジェクト — JavaScript初級者から中級者になろう — uhyohyo.net

JavaScript プリミティブ型 (基本データ型)

プリミティブ型のうち,数値,文字列,真偽値には,ラッパーオブジェクトがある.

プリミティブ型の値がプロパティやメソッドを呼び出した時,内部的には一時的にラッパーオブジェクトが呼び出され,そのオブジェクトのプロパティやメソッドを参照している.

var text = "texttext";
console.log(text); // texttext
console.log(text.length); // 8

ラッパーオブジェクトをわざわざ呼び出す方法もある.

var text2 = new String("text2text2");
console.log(text2); // String {0: "t", 1: "e", 2: "x", 3: "t", 4: "2", 5: "t", 6: "e", 7: "x", 8: "t", 9: "2", length: 10, [[PrimitiveValue]]: "text2text2"}
console.log(text2.length); // 10

プリミティブ型が内部的に生成したラッパーオブジェクトは使い捨てらしい.

var text = "texttext";
text.abc = "abc";
console.log(text.abc); // undefined

var text2 = new String("text2text2");
text2.abc = "abc";
console.log(text2.abc); // abc

逆にラッパーオブジェクトで演算する時はプリミティブ型になるらしい.

text4 = text2 + text2;
console.log(text4); // text2text2text2text2