JS基本數據類型爲什麼可以調用方法?

JS基本數據類型爲什麼可以調用方法?

一.包裝類

包裝類是內建對象的子集,包括Number,String,Boolean。

可以將基本類型的數據封裝到包裝類的對象中。

var num = 123;
console.log("num = " + num + "-- type : " + typeof num);
num = new Number(123);
console.log("num = " + num + "-- type : " + typeof num);

var bool = true;
console.log("bool = " + bool + "-- type : " + typeof bool);
bool = new Boolean(true);
console.log("bool = " + bool + "-- type : " + typeof bool);

var str = "hello";
console.log("str = " + str + "-- type : " + typeof str);
string = new String("hello");
console.log("str = " + str + "-- type : " + typeof str);

可以看到,對於number和boolean類型的數據來說,調用構造函數進行封裝後,類型變爲object。而對於string來說,調用構造函數後類型仍然爲string,所以,字符串雖然是一個基本類型,但是存儲的時候是按照對象的方式存儲的。

二.解釋器底層的自動封裝

var num = 123;
var str = num.toString();

console.log(str + " ----- type : " + typeof str);

爲什麼一個基本數據類型(123存儲在棧中),可以像對象一樣調用方法?解釋器底層對number類型的123封裝成了一個對象,然後調用了對象的方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章