JavaScriptにはプリミティブ型とオブジェクト型がある.
九章第七回 プリミティブとオブジェクト — JavaScript初級者から中級者になろう — uhyohyo.net
プリミティブ型のうち,数値,文字列,真偽値には,ラッパーオブジェクトがある.
プリミティブ型の値がプロパティやメソッドを呼び出した時,内部的には一時的にラッパーオブジェクトが呼び出され,そのオブジェクトのプロパティやメソッドを参照している.
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