JavaScript中的包裝對象介紹
javascript對象是一種復(fù)合值,它是屬性或已命名的值的集合,通過符號"."來引用屬性值,當屬性值是一個函數(shù)的時候,我們稱之為方法。我們看到字符串也具有屬性和方法:
var s="hello,world!";
var word=s.substring(s.indexof("")+1,s.length);
字符串既然不是對象,為什么它又有屬性呢,只要引用了字符串s的屬性,javascript就會將字符串值通過調(diào)用new String(s)的構(gòu)造函數(shù)轉(zhuǎn)換成對象,這個對象繼承了字符串的方法,并用來處理對屬性的引用,一旦屬性引用結(jié)束,這個新創(chuàng)建的對象就會被銷毀(其實實現(xiàn)上并不一定會創(chuàng)建這個對象,只是整個過程看起來這樣)。
同字符串一樣,數(shù)字和布爾值也具有各自的方法:通過Number()和Boolean()構(gòu)造函數(shù)創(chuàng)建一個臨時對象,這些方法的調(diào)用均來自這個臨時對象。這個臨時對象被稱之為包裝對象。
注意 :
var s="test"; //聲明一個字符串
s.len=4; //給它設(shè)置一個len屬性
var t=s.len; //查詢這個屬性
這個時候我們輸出t時應(yīng)當為undefined,第二行代碼創(chuàng)建一個臨時字符串對象,并給其len屬性賦值為4,隨即銷毀這個對象,第三行代碼通過原始的字符串值s設(shè)置一個新的屬性,嘗試讀取其len屬性,這個屬性自然不存在,所以t輸出時值為undefined。
這段代碼表明,在讀取數(shù)字,字符串,布爾值的屬性值(或方法)時,表現(xiàn)得像對象一樣,但試圖給其屬性賦值時,則會忽略這個操作:修改只是發(fā)生在臨時對象上,而這個臨時對象并未繼續(xù)保留下來。
存取字符串、數(shù)字、或布爾值的屬性時創(chuàng)建的臨時對象稱作包裝對象,它只是偶爾用來區(qū)分字符串值和字符串對象,數(shù)字和數(shù)值對象,布爾值和布爾對象
相關(guān)文章
js函數(shù)的引用, 關(guān)于內(nèi)存的開銷
函數(shù)的引用, 對于內(nèi)存的開銷分析,需要的朋友可以參考下2012-09-09使用 Jest 和 Supertest 進行接口端點測試實例詳解
這篇文章主要介紹了使用 Jest 和 Supertest 進行接口端點測試,結(jié)合實例形式詳細分析了使用 Jest 和 Supertest 進行接口端點測試具體原理、操作技巧與相關(guān)注意事項,需要的朋友可以參考下2020-04-04基于JS抓取某高校附近共享單車位置 使用web方式展示位置變化代碼實例
這篇文章主要介紹了基于JS抓取某高校附近共享單車位置 使用web方式展示位置變化代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08JavaScript實現(xiàn)動態(tài)網(wǎng)頁飄落的雪花
這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)動態(tài)網(wǎng)頁飄落的雪花,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-06-06Bootstrap基本插件學(xué)習(xí)筆記之輪播幻燈片(23)
這篇文章主要為大家詳細介紹了Bootstrap基本插件學(xué)習(xí)筆記之輪播幻燈片的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12