先上代碼:
Paste_Image.png
這里會打印什么呢?
undefined(自問自答好無聊)
那么為什么會打印成undefined呢?
...(自問自懵也好無聊)
現(xiàn)在開始聽我解釋
先看代碼
var a = 'dong';
a.charAt(0) //a是一個基本類型,為什么也可以擁有好多方法和屬性呢?
如果回答是
js里萬物皆對象,對象就有屬性和方法
那么這個回答只能給60分.
標(biāo)準(zhǔn)答案神奇妙味大講師給出了回答
包裝對象: 基本類型都有自己對應(yīng)的包裝對象
上文里a.charAt(0) 執(zhí)行到這句話的時(shí)候, 基本類型會找到對應(yīng)的包裝對象類型,然后包裝對象把所有的屬性和方法都給了基本類型,然后----包裝對象消失----
所以回到最上面的代碼圖
Paste_Image.png
執(zhí)行到
a.name = 'dong'
這句話的時(shí)候, 基本類型要添加一個屬性,這時(shí)候基本類型會在對應(yīng)的包裝類型上添加該屬性. 但是把這個屬性給了包裝對象后,包裝對象消失掉了.執(zhí)行
console.log(a.name)
的時(shí)候, a這個基本類型又重新創(chuàng)建了一個新的包裝對象,而這個包裝對象上是沒有剛添加的那個屬性的.