包裝對象

一個最基本的面向對象寫法:

function Aaa(){ ? ? ? ? ? ? ? ? ? ? ?//創(chuàng)建一個構造函數(shù)

this.name = '小明'; ? ? ? ? ? ? ? ?//添加屬性

}

Aaa.prototype.showName = function(){ ? ? //添加方法

alert( this.name );

};

var a1 = new Aaa(); ? ? ? ? ? ? ? ? ? ? ? //通過new構造函數(shù)刹孔,創(chuàng)建一個對象,此對象擁有構造函數(shù)的方法和屬性

a1.showName(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? //調(diào)用屬性/方法

那么編寫面向對象的目的是什么序愚?為了能夠像系統(tǒng)對象如Array狼讨、Date的形式添加方法:

var arr=new Array();

arr.push();

arr.sort();

可以發(fā)現(xiàn)系統(tǒng)對象面向對象使用形式非常類似,對象擁有其屬性及方法酝枢。其實JS源碼中纺蛆,系統(tǒng)對象也是基于原型的程序在辆。例如在JS源碼中的Array是這樣設計的:

function Array(){

this.length=0;

}

Array.prototype.push=function(){};

Array.prototype.sort=function() {};

由此自己編寫的時候不要去修改系統(tǒng)自帶的方法,會覆蓋原有方法泳姐,例如:

var arr=[1,2,3];

Array.prototype.push=function(){}; ? ? ? ? ? ?//push方法為空

arr.push(4,5,6) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //push方法失效

push方法在JS源碼中是如何做到的呢:

Array.prototype.push=function(){

//this : 1,2,3; this為數(shù)組本身效拭。arguments : 4,5,6 ?實參 。目標是讓4,5,6添加到this后面

for(var i=0;i<arguments.length;i++){

this[this.length]=arguments[i];

}

return this.length ? ? ? ? ? ? ? //push方法返回值為arr.length

};

既然JS是基于原型的的胖秒,舉個很普通的例子:

字符串方法:

var str="hello";

str.charAt(0);

str.indexOf("e");

顯然 alert(typeof str);彈出結果是String(基本數(shù)據(jù)類型)缎患。那么疑問產(chǎn)生,只有對象才能擁有方法阎肝,既然str是基本類型挤渔,那么他是怎么擁有方法的呢?這就涉及到了包裝對象

包裝對象:基本類型String风题、boolen判导、Number都有自己對應的包裝對象

var str=new String("創(chuàng)建了一個基本類型的包裝對象");

alert(typeof str) ? ? ? // Object 創(chuàng)建了一個字符串類型的包裝對象,此時str為一個對象

上文中可以看到JS方法是寫在構造函數(shù)的原型下沛硅,繼續(xù)引用上文例子:

var str="hello"; ? ? ? //聲明變量時眼刃,str是個字符串,不是對象

str.charAt(0); ??

String.prototype.charAt=function(){} ? ? ?//當字符串調(diào)用方法時摇肌,基本類型會找到對應的包裝對象擂红,然后包裝對象消失,因此給基本類型添加方法围小,只需添加到其所對應的包裝對象的原型即可:

var str="hello";

String.prototype.lastValue=function(){

return this.charAt(this.length-1);

}

alert(str.lastValue()); ? ? ?//o

var str="hello";

str.number=10; ? ? ? ? ?

alert( str.number ) ? ? ? ? //undefined 包裝對象消失,str為一個新對象吩抓,新對象str是個String類型

總結

包裝對象,可以把它認為是個不存在的疹娶。

當基本類型創(chuàng)建方法時,包裝對象就會出現(xiàn)雨饺,此時基本類型變成對象钳垮,運行到下一行代碼時包裝對象消失。這也是包裝對象存在的目的

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末额港,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子移斩,更是在濱河造成了極大的恐慌绢馍,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肠套,死亡現(xiàn)場離奇詭異舰涌,居然都是意外死亡,警方通過查閱死者的電腦和手機你稚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刁赖,“玉大人,你說我怎么就攤上這事宇弛。” “怎么了涯肩?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長病苗。 經(jīng)常有香客問我,道長贷腕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任泽裳,我火速辦了婚禮破婆,結果婚禮上,老公的妹妹穿的比我還像新娘祷舀。我一直安慰自己,他們只是感情好裳扯,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布饰豺。 她就那樣靜靜地躺著亿鲜,像睡著了一般冤吨。 火紅的嫁衣襯著肌膚如雪饶套。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天凤跑,我揣著相機與錄音叛复,去河邊找鬼扔仓。 笑死,一個胖子當著我的面吹牛翘簇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播版保,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼叫胁!你這毒婦竟也來了?” 一聲冷哼從身側響起驼鹅,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤森篷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后仲智,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡剪验,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年岩馍,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛀恩。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖壳咕,靈堂內(nèi)的尸體忽然破棺而出席揽,到底是詐尸還是另有隱情谓厘,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布属桦,位于F島的核電站他爸,受9級特大地震影響聂宾,放射性物質(zhì)發(fā)生泄漏诊笤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一讨跟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧茶袒,春花似錦、人聲如沸弹谁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咳胃。三九已至,卻和暖如春展懈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背存崖。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留冗栗,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓隅居,卻偏偏與公主長得像,于是被迫代替她去往敵國和親胎源。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 單例模式 適用場景:可能會在場景中使用到對象宪卿,但只有一個實例赞季,加載時并不主動創(chuàng)建愧捕,需要時才創(chuàng)建 最常見的單例模式申钩,...
    Obeing閱讀 2,056評論 1 10
  • 工廠模式類似于現(xiàn)實生活中的工廠可以產(chǎn)生大量相似的商品瘪阁,去做同樣的事情,實現(xiàn)同樣的效果;這時候需要使用工廠模式管跺。簡單...
    舟漁行舟閱讀 7,721評論 2 17
  • 如何控制alert中的換行?\n alert(“p\np”); 請編寫一個JavaScript函數(shù) parseQu...
    heyunqiang99閱讀 1,083評論 0 6
  • 一廉涕、JavaScript基礎知識回顧 1.1 JavaScript 1.1.1 javascript是什么艇拍? Ja...
    福爾摩雞閱讀 1,235評論 0 7
  • 相關知識點 數(shù)據(jù)類型、運算卸夕、對象、function快集、繼承、閉包个初、作用域、原型鏈院溺、事件、RegExp、JSON马澈、Aj...
    sandisen閱讀 11,370評論 7 175