包裝對象

var s='this is a string';

alert(s.length);//16

alert(s.indexOf('is'));//2

值類型不是對象類型,但是也可以擁有屬性和方法,當運行時,JS會隱式爲相應代碼添加對象,這種行爲叫做包裝對象

 

實例代碼:

var str = 'hello';//此刻str爲string基本類型,也不是一個對象

str.number=10;//但是這行代碼可以執行,就是因爲JS會隱式爲此行代碼添加string對象有的屬性和方法,但是用完之後,立馬銷燬了,在基本類型的包裝對象下面創建一個對象

console.log(str.number);//undefined

 

執行var str = 'hello';的時候是沒有問題的,str就是一個基本類型

當執行str.number=10;的時候,這個基本類要添加一個屬性,他就會去這

個基本類型所對應的包裝對象下面創建一個對象,然後把這個10添加到對象下面

這行代碼執行完畢之後,這個包裝對象就消失了,

消失之後當我們再去調用str.number的時候,這個str.number又重新創建

一個包裝對象,但是這個時候的對象和上一行代碼的對象不是一個,現在形成的新的對象

下面是沒有這個str.number的,所以找到是undefined

 

 

包裝對象:在JavaScript中只要引用了字符串(數字、布爾值也是一樣的)的屬性,JS就會將字符串通過調用new String(s)的方式轉換成對象,這個對象繼承了字符串的方法,並被用來處理屬性的引用。一旦屬性引用結束,這個新創建的對象就會銷燬。這個過程就叫包裝對象

 

注意:我們顯式創建的對象與JS自動隱式創建的對象是有區別的!

瀏覽器自己隱式創建的包裝對象,是一個臨時對象,在使用完後之後就會被拋棄了。

 

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