摘要:今天來(lái)討論一下中的基本包裝對(duì)象也叫基本包裝類(lèi)型,之前剛學(xué)到這里的時(shí)候,自己也是一頭霧水,不明白這個(gè)基本包裝對(duì)象到底是個(gè)什么鬼,后來(lái)找了很多資料,終于看清了它的真面目?;绢?lèi)型引用類(lèi)型等,說(shuō)白了就是對(duì)象。。。
今天來(lái)討論一下JS中的基本包裝對(duì)象(也叫基本包裝類(lèi)型),之前剛學(xué)到這里的時(shí)候,自己也是一頭霧水,不明白這個(gè)基本包裝對(duì)象到底是個(gè)什么鬼,后來(lái)找了很多資料,終于看清了它的真面目。首先呢,我們現(xiàn)在復(fù)習(xí)一下JS的數(shù)據(jù)類(lèi)型,JS數(shù)據(jù)類(lèi)型被分為了兩大門(mén)派,基本類(lèi)型和引用類(lèi)型。
基本類(lèi)型:`Undefined`,`Null`,`Boolean`,`Number`,`String` 引用類(lèi)型:`Object`,`Array`,`Date`,`RegExp`等,說(shuō)白了就是對(duì)象。。。
我們都知道,引用類(lèi)型有方法和屬性,但是基本類(lèi)型是木有的,但是你一定見(jiàn)過(guò)這樣的代碼
var str = "hello"; //string 基本類(lèi)型 var s2 = str.charAt(0); alert(s2); // h
毫無(wú)疑問(wèn)上面的string是一個(gè)基本類(lèi)型,但是它卻能召喚出一個(gè)charAt()的方法,這是什么原因呢?
主要是因?yàn)樵诨绢?lèi)型中,有三個(gè)比較特殊的存在就是:String Number Boolean,這三個(gè)基本類(lèi)型都有自己對(duì)應(yīng)的包裝對(duì)象。并且隨時(shí)等候召喚。包裝對(duì)象呢,其實(shí)就是對(duì)象,有相應(yīng)的屬性和方法。至于這個(gè)過(guò)程是怎么發(fā)生呢,其實(shí)是在后臺(tái)偷偷發(fā)生的。
來(lái)看個(gè)栗子
//我們平常寫(xiě)程序的過(guò)程: var str = "hello"; //string 基本類(lèi)型 var s2 = str.charAt(0); //在執(zhí)行到這一句的時(shí)候 后臺(tái)會(huì)自動(dòng)完成以下動(dòng)作 : //相當(dāng)于: ( var str = new String("hello"); // 1 找到對(duì)應(yīng)的包裝對(duì)象類(lèi)型,然后通過(guò)包裝對(duì)象創(chuàng)建出一個(gè)和基本類(lèi)型值相同的對(duì)象 var s2 = str.chaAt(0); // 2 然后這個(gè)對(duì)象就可以調(diào)用包裝對(duì)象下的方法,并且返回結(jié)給s2. str = null; // 3 之后這個(gè)臨時(shí)創(chuàng)建的對(duì)象就被銷(xiāo)毀了, str =null; ) ` alert(s2);//h alert(str);//hello 注意這是一瞬間的動(dòng)作 實(shí)際上我們沒(méi)有改變字符串本身的值。就是做了下面的動(dòng)作.這也是為什么每個(gè)字符串具有的方法并沒(méi)有改變字符串本身的原因。
由此我們可以知道,引用類(lèi)型和基本包裝對(duì)象的區(qū)別在于:生存期
引用類(lèi)型所創(chuàng)建的對(duì)象,在執(zhí)行的期間一直在內(nèi)存中,而基本包裝對(duì)象只是存在了一瞬間。
所以我們無(wú)法直接給基本類(lèi)型添加方法:
舉個(gè)栗子
var str = "hello"; str.number = 10; //假設(shè)我們想給字符串添加一個(gè)屬性number ,后臺(tái)會(huì)有如下步驟 // 相當(dāng)于 { var str = new String("hello"); // 1 找到對(duì)應(yīng)的包裝對(duì)象類(lèi)型,然后通過(guò)包裝對(duì)象創(chuàng)建出一個(gè)和基本類(lèi)型值相同的對(duì)象 str.number = 10; // 2 通過(guò)這個(gè)對(duì)象調(diào)用包裝對(duì)象下的方法 但結(jié)果并沒(méi)有被任何東西保存 str =null; // 3 這個(gè)對(duì)象又被銷(xiāo)毀 } alert(str.number); //undefined 當(dāng)執(zhí)行到這一句的時(shí)候,因?yàn)榛绢?lèi)型本來(lái)沒(méi)有屬性,后臺(tái)又會(huì)重新重復(fù)上面的步驟 //相當(dāng)于 { var str = new String("hello"); // 1 找到基本包裝對(duì)象,然后又新開(kāi)辟一個(gè)內(nèi)存,創(chuàng)建一個(gè)值為hello對(duì)象 str.number = undefined // 2 因?yàn)榘b對(duì)象下面沒(méi)有number這個(gè)屬性,所以又會(huì)重新添加,因?yàn)闆](méi)有值,所以值是未定 ;然后彈出結(jié)果 str =null; // 3 這個(gè)對(duì)象又被銷(xiāo)毀 }
那么我們?cè)趺床拍芙o基本類(lèi)型添加方法或者屬性呢?
答案是在基本包裝對(duì)象的原型下面添加,每個(gè)對(duì)象都有原型。
來(lái)看個(gè)栗子
//給字符串添加方法 要寫(xiě)到對(duì)應(yīng)的包裝對(duì)象的原型下才行 var str = "hello"; String.prototype.last= fuction(){ return this.charAt(this.length); }; str.last(); // 5 執(zhí)行到這一句,后臺(tái)依然會(huì)偷偷的干這些事 //相當(dāng)于 { var str = new String("hello");// 找到基本包裝對(duì)象,new一個(gè)和字符串值相同的對(duì)象, str.last(); // 通過(guò)這個(gè)對(duì)象找到了包裝對(duì)象下的方法并調(diào)用 str =null; // 這個(gè)對(duì)象被銷(xiāo)毀 }
看注釋相信能看出創(chuàng)建在基本包裝對(duì)象原型下面的方法和屬性才能被保存。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/102101.html
摘要:平時(shí)在復(fù)習(xí)基礎(chǔ)知識(shí)時(shí),經(jīng)常會(huì)遇到數(shù)據(jù)類(lèi)型基礎(chǔ)數(shù)據(jù)類(lèi)型內(nèi)置對(duì)象包裝類(lèi)型對(duì)象,檢測(cè)數(shù)據(jù)類(lèi)型時(shí),用到的值,感覺(jué)都差不多,但是又有差異。值與數(shù)據(jù)類(lèi)型關(guān)系對(duì)比下圖,即可知值相較于基礎(chǔ)數(shù)據(jù)類(lèi)型少多 平時(shí)在復(fù)習(xí)JS基礎(chǔ)知識(shí)時(shí),經(jīng)常會(huì)遇到JS數(shù)據(jù)類(lèi)型、基礎(chǔ)數(shù)據(jù)類(lèi)型、內(nèi)置對(duì)象、包裝類(lèi)型對(duì)象,檢測(cè)數(shù)據(jù)類(lèi)型時(shí),用到的typeof值,感覺(jué)都差不多,但是又有差異。今天特地整理下,方便理解。 JS數(shù)據(jù)類(lèi)型 基礎(chǔ)數(shù)...
摘要:知識(shí)點(diǎn)閉包問(wèn)題執(zhí)行機(jī)制定時(shí)器線程理解構(gòu)造函數(shù)內(nèi)的方法與構(gòu)造函數(shù)屬性上方法的對(duì)比中都經(jīng)歷了什么深入理解中的屬性和特性中的方法詳解為什么編程語(yǔ)言的都要定義數(shù)據(jù)類(lèi)型中與的區(qū)別輕松理解基本包裝對(duì)象中數(shù)據(jù)類(lèi)型內(nèi)置對(duì)象包裝類(lèi)型對(duì)象關(guān)系基礎(chǔ)之?dāng)?shù)組中的邏輯 JS知識(shí)點(diǎn) JS hoist JS閉包問(wèn)題 JS執(zhí)行機(jī)制 JS定時(shí)器線程理解 構(gòu)造函數(shù)內(nèi)的方法與構(gòu)造函數(shù)prototype屬性上方法的對(duì)比 JS...
摘要:最近面試幾家前端職位,想知道目前的前端面試題是偏向哪一塊,都主要問(wèn)到的是語(yǔ)法,閉包,原型鏈,繼承那一塊。并且將面試題的知識(shí)點(diǎn)匯總一下。參考網(wǎng)站面試題圖片過(guò)多的時(shí)候如何優(yōu)化圖標(biāo)很多的時(shí)候可以用雪碧圖圖片過(guò)大時(shí)候可以壓縮一下。 最近面試幾家前端職位,想知道目前的前端面試題是偏向哪一塊,都主要問(wèn)到的是ES6語(yǔ)法,閉包,原型鏈,繼承那一塊。并且將面試題的知識(shí)點(diǎn)匯總一下。有助于下次面試。 1.H...
摘要:最近面試幾家前端職位,想知道目前的前端面試題是偏向哪一塊,都主要問(wèn)到的是語(yǔ)法,閉包,原型鏈,繼承那一塊。并且將面試題的知識(shí)點(diǎn)匯總一下。參考網(wǎng)站面試題圖片過(guò)多的時(shí)候如何優(yōu)化圖標(biāo)很多的時(shí)候可以用雪碧圖圖片過(guò)大時(shí)候可以壓縮一下。 最近面試幾家前端職位,想知道目前的前端面試題是偏向哪一塊,都主要問(wèn)到的是ES6語(yǔ)法,閉包,原型鏈,繼承那一塊。并且將面試題的知識(shí)點(diǎn)匯總一下。有助于下次面試。 1.H...
閱讀 3236·2021-11-23 09:51
閱讀 3859·2021-11-22 15:29
閱讀 3316·2021-10-08 10:05
閱讀 1699·2021-09-22 15:20
閱讀 1172·2019-08-30 15:56
閱讀 1160·2019-08-30 15:54
閱讀 807·2019-08-26 11:54
閱讀 2706·2019-08-26 11:32