JavaScript中的Primitive對象封裝介紹
JavaScript中,string、number、boolean均為primitive基本類型,也即字符串、數(shù)值、布爾值并不是以對象的形式而存在的。不過,由于需要對這三種primitive類型值進(jìn)行操作,因此JavaScript會自動封裝這三種類型的值,使其作為對象而擁有屬性與方法。以string為例,這種封裝過程如下:
1.當(dāng)JavaScript遇到對string值進(jìn)行屬性訪問或者方法調(diào)用時,會調(diào)用new String(字符串值)自動將該string封裝成一個String對象。
2.JavaScript會訪問這個新創(chuàng)建的對象的屬性或者方法,并返回相應(yīng)的結(jié)果。
3.屬性訪問或者方法調(diào)用結(jié)束后,JavaScript將立即銷毀這個新創(chuàng)建的對象。
以下面的代碼為例,對JavaScript自動創(chuàng)建的String對象進(jìn)行屬性寫入操作沒有任何意義,因為這個創(chuàng)建出來的對象在寫入語句結(jié)束后就不復(fù)存在了:
var s = "test";
s.length = 9;
console.log(s.length);//still 4
s.newVariable = 9;
console.log(s.newVariable);//undefined
console.log(s === "test");//true
值得注意的是,上述代碼中的s變量所表示的永遠(yuǎn)是primitive的字符串,JavaScript所自動創(chuàng)建的字符串對象存在于執(zhí)行s.length或者s.newVariable操作的過程中。這可以從以上實驗的最后一行代碼中得到驗證。
除了對Primitive值進(jìn)行自動封裝,開發(fā)人員也可以選擇手動進(jìn)行相應(yīng)的過程。與自動封裝不同的是,手動封裝所得到的對象并不會被立即銷毀,因此針對手動封裝的對象所采取的屬性寫入操作是有意義的:
var t = new String("test");
t.length = 9;
console.log(t.length);//still 4, as length attribute is read only
t.newVariable = 9;
console.log(t.newVariable);//9
console.log(t == "test");//true
console.log(t === "test");//false
- javascript 面向?qū)ο笕吕砭氈當(dāng)?shù)據(jù)的封裝
- Javascript 面向?qū)ο螅ǘ┓庋b代碼
- Javascript 面向?qū)ο缶幊蹋ㄒ唬?封裝
- javascript對XMLHttpRequest異步請求的面向?qū)ο蠓庋b
- javascript面向?qū)ο蟀b類Class封裝類庫剖析
- javascript 面向?qū)ο缶幊袒A(chǔ):封裝
- JavaScript之信息的封裝 js對象入門
- js實現(xiàn)對ajax請求面向?qū)ο蟮姆庋b
- javascript 面向?qū)ο蠓庋b與繼承
- 學(xué)習(xí)Javascript面向?qū)ο缶幊讨庋b
- Javascript之面向?qū)ο?-封裝
- JavaScript對象封裝的簡單實現(xiàn)方法(3種方法)
相關(guān)文章
javascript當(dāng)中的代碼嗅探擴(kuò)展原生對象和原型(prototype)
如果不是有特殊需要而去擴(kuò)展原生對象和原型(prototype)的做法是不好的,除非這樣做是值得的,例如,向一些舊的瀏覽器中添加一些ECMAScript5中的方法2013-01-01javascript實現(xiàn)網(wǎng)頁端解壓并查看zip文件
昨天給大家分享了在網(wǎng)頁端使用zip.js插件實現(xiàn)在線壓縮文件的代碼,今天給大家分享一下javascript實現(xiàn)網(wǎng)頁端解壓并查看zip文件的方法,非常的實用,有需要的小伙伴可以參考下2015-12-12微信小程序全局?jǐn)?shù)據(jù)共享和分包圖文詳解
全局?jǐn)?shù)據(jù)共享是為了解決組件之間數(shù)據(jù)共享的問題,下面這篇文章主要給大家介紹了關(guān)于微信小程序全局?jǐn)?shù)據(jù)共享和分包的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09一文帶你快速學(xué)會JavaScript條件判斷及高級用法
JavaScript支持其用于執(zhí)行根據(jù)不同的條件不同的操作條件語句,下面這篇文章主要給大家介紹了關(guān)于如何在JavaScript中更好的使用條件判斷的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09TypeScript中type和interface的區(qū)別及注意事項
type的類型別用可以用戶其他的類型,比如聯(lián)合類型、元祖類型、基本類型,interface不行,下面這篇文章主要給大家介紹了關(guān)于TypeScript中type和interface的區(qū)別及注意事項的相關(guān)資料,需要的朋友可以參考下2022-10-10JS奇技之利用scroll來監(jiān)聽resize詳解
這篇文章主要給大家介紹了JS奇技之利用scroll來監(jiān)聽resize的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-06-06