JavaScriptの数値データからみるオブジェクトとプリミティブ

JavaScriptのデータは大きく分けてオブジェクトとプリミティブに分けられます. 厳密な定義はここを参考にしてもらいたいのですが,ややこしいのがプリミティブでもオブジェクトのように振る舞うケースがあることです.数値を例にみてみましょう.

var a = 3.14; // このときaにはプリミティブ値が代入されている
// コンストラクタを使うことでオブジェクトとして数値を生成できる
var b = new Number(3.14);

console.log(typeof(a)); // => 'number'
console.log(typeof(b)); // => 'object'

// オブジェクト指向言語では,オブジェクトを通してメソッドを呼び出すことができる
b.toFixed(0); // => '3'
// プリミティブな値の場合,どうなるのでしょう.オブジェクトでないのにメソッドを呼び出すことはできるのでしょうか.
a.toFixed(0); // => '3' できた!

呼び出せました.これは,プリミティブ値がメソッドを呼び出したときに内部でオブジェクトに暗黙の変換をおこなうことで実現されています.
以上,プリミティブ値でも表面上はオブジェクトして扱うことができるという説明でした.