* 裝箱指的是,將一個值變成指向該值的對象。(復制值)
* 拆箱指的是,把指向值的對象還原成該值。(復制值)

# 裝箱
在ES中,裝箱會根據值的原始類型構造不同類的對象。
~~~
var bool = new Object(true);
console.dir(bool);
var str = new Object("ES");
console.dir(str);
var num = new Object(2017);
console.dir(num);
~~~

console.dir的時候,會發現有個\[\[PrimitiveValue\]\]標記,他會顯示該對象內部指向的原始值。
# 拆箱
可以通過valueOf函數進行拆箱操作。
~~~
boolPV = bool.valueOf();
console.dir(boolPV);
strPV = str.valueOf();
console.dir(strPV);
numPV = num.valueOf();
console.dir(numPV);
~~~

# 自動裝箱
當把一個原始值當作對象使用函數時,ES會觸發自動裝箱。
~~~
var foo = 100;
foo.toExponential(); "1e+2"
~~~
以下是執行foo.toExponential()時,ES程序內部做的事情:
* 對foo進行裝箱,構造出一個新的Number類對象。
* 用該對象調用toExponential函數。
* 返回函數操作結果后,將該對象丟棄。
因此,值類型還是值類型,引用類型還是引用類型,他們之間存在著明顯的差異。
不能以“一切都是對象”一言蔽之。