天天看點

javascript包裝對象

           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。

這段代碼表面,在讀取數字,字元串,布爾值的屬性值(或方法)時,表現得像對象一樣,但試圖給其屬性指派時,則會忽略這個操作:修改隻是發生在臨時對象上,

而這個臨時對象并未繼續保留下來。

   存取字元串、數字、或布爾值的屬性時建立的臨時對象稱作包裝對象,它隻是偶爾用來區分字元串值和字元串對象,數字和數值對象,布爾值和布爾對象

繼續閱讀