JavaScript 共有下列七種「原始資料類型(primitive data types)」:
相對於「物件」,原始資料類型並沒有自己的「屬性」與「方法」。
然而,神奇的是,我們還是可以針對這些資料進行操作!例如要將一字串全部改為大寫,可以直接套用「toUpperCase()」達成如下:
宣告變數「String」、並賦值為「”abcde”」後,居然可直接套用「toUpperCase()」將內容都轉為大寫,難不成這個字串變數本身就有自己的方法?但這不就違背了其身為「原始資料類型」應有的特性嗎?
強制轉型(coercion)
這是因為原始資料類型會被「強制轉型」,在某個瞬間,「String」這個變數被強制轉成「new String」,因此適用「String.prototype」的屬性與方法,包含「toUpperCase()」,但套用完該方法之後,就變回原本的原始資料類型。
當然也可以直接在變數宣告時,就以實例形式宣告為「new String」,這當中的「String」是 JavaScript 預設的建構子函式(constructor function),因此「String.prototype」會自帶許多屬性與方法,但這些屬性與方法不一定用得上,還會造成記憶體額外負擔,因此,既然有強制轉型機制,宣告時就以「原始資料類型」形式即可。