JavaScript中的Primitive對象封裝介紹
JavaScript中,string、number、boolean均為primitive基本類型,也即字符串、數(shù)值、布爾值并不是以對象的形式而存在的。不過,由于需要對這三種primitive類型值進(jìn)行操作,因此JavaScript會(huì)自動(dòng)封裝這三種類型的值,使其作為對象而擁有屬性與方法。以string為例,這種封裝過程如下:
1.當(dāng)JavaScript遇到對string值進(jìn)行屬性訪問或者方法調(diào)用時(shí),會(huì)調(diào)用new String(字符串值)自動(dòng)將該string封裝成一個(gè)String對象。
2.JavaScript會(huì)訪問這個(gè)新創(chuàng)建的對象的屬性或者方法,并返回相應(yīng)的結(jié)果。
3.屬性訪問或者方法調(diào)用結(jié)束后,JavaScript將立即銷毀這個(gè)新創(chuàng)建的對象。
以下面的代碼為例,對JavaScript自動(dòng)創(chuàng)建的String對象進(jìn)行屬性寫入操作沒有任何意義,因?yàn)檫@個(gè)創(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所自動(dòng)創(chuàng)建的字符串對象存在于執(zhí)行s.length或者s.newVariable操作的過程中。這可以從以上實(shí)驗(yàn)的最后一行代碼中得到驗(yàn)證。
除了對Primitive值進(jìn)行自動(dòng)封裝,開發(fā)人員也可以選擇手動(dòng)進(jìn)行相應(yīng)的過程。與自動(dòng)封裝不同的是,手動(dòng)封裝所得到的對象并不會(huì)被立即銷毀,因此針對手動(dò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實(shí)現(xiàn)對ajax請求面向?qū)ο蟮姆庋b
- javascript 面向?qū)ο蠓庋b與繼承
- 學(xué)習(xí)Javascript面向?qū)ο缶幊讨庋b
- Javascript之面向?qū)ο?-封裝
- JavaScript對象封裝的簡單實(shí)現(xiàn)方法(3種方法)
相關(guān)文章
javascript當(dāng)中的代碼嗅探擴(kuò)展原生對象和原型(prototype)
如果不是有特殊需要而去擴(kuò)展原生對象和原型(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條件判斷及高級用法
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ì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-06-06