Primitive (プリミティブ)

JavaScript において、プリミティブ (primitive、プリミティブ値、プリミティブデータ型) はオブジェクトでなく、メソッドを持たないデータのことです。 7 種類のプリミティブデータ型があります。

多くの場合、プリミティブ値は、その言語実装の最下層にて直接的に表現されます。

すべてのプリミティブ値は、イミュータブル (immutable) 、つまり変更できません。変数には新しい値を再割り当てすることができますが、既存の値については、オブジェクト、配列、関数が変更できるのに対して、プリミティブ値は変更することができません。この言語では、プリミティブな値を変更するユーティリティは提供されていません。

プリミティブにはメソッドがありませんが、あたかもメソッドがあるかのように振る舞います。プリミティブのプロパティにアクセスするとき、JavaScript で自動ボックス値をラッパーオブジェクトに格納し、代わりにそのオブジェクトのプロパティにアクセスします。例えば、 "foo".includes("f") は暗黙のうちに String ラッパーオブジェクトを作成して、そのオブジェクトに対して String.prototype.includes() を呼び出します。この自動ボックス化の動作は JavaScript コードでは監視できませんが、様々な動作の良いメンタルモデルになります。例えば、プリミティブの「変更」ができない理由(str.foo = 1str 自身のプロパティ foo に割り当てられるのではなく、一時的なラッパーオブジェクトに割り当てられるため)などが分かります。

関連情報