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