javascript物件是一種複合值,它是屬性或已命名的值的集合,透過符號"."來引用屬性值,當屬性值是一個函數的時候,我們稱之為方法。我們看到字串也具有屬性和方法:
var s="hello,world!";
var word=s.substring(s.indexof("") 1,s.length);
字串既然不是對象,為什麼它又有屬性呢,只要引用了字串s的屬性,javascript就會將字串值透過呼叫new String(s)的建構子轉換成對象,這個物件繼承了字串的方法,並用來處理屬性的引用,一旦屬性引用結束,這個新建立的物件就會被銷毀(其實實作上不一定會建立這個對象,只是整個過程看起來這樣)。
同字串一樣,數字和布林值也具有各自的方法:透過Number()和Boolean()建構函式建立一個臨時對象,這些方法的呼叫都來自這個臨時物件。這個臨時物件被稱為包裝物件。
注意 :
var s="test"; //宣告一個字串
s.len=4; //為它設定一個len屬性
var t=s.len; //查詢這個屬性
這時候我們輸出t時應為undefined,第二行程式碼建立一個臨時字串對象,並給其len屬性賦值為4,隨即銷毀這個對象,第三行程式碼透過原始的字串值s設定一個新的屬性,嘗試讀取其len屬性,這個屬性自然不存在,所以t輸出時值為undefined。
這段程式碼表明,在讀取數字,字串,布林值的屬性值(或方法)時,表現得像物件一樣,但試圖給其屬性賦值時,則會忽略這個操作:修改只是發生在臨時物件上,而這個臨時物件並未繼續保留下來。
訪問字串、數字、或布林值的屬性時創建的臨時對象稱作包裝對象,它只是偶爾用來區分字符串值和字符串對象,數字和數值對象,布爾值和布爾對象