解析“用ES5原型鏈實現(xiàn)的組合繼承”

用ES5實現(xiàn)繼承拙毫,就是用原型鏈實現(xiàn)。只要把子類和父類的原型鏈打通就解決了主要問題棺禾。最常用的是組合繼承:

ES5實現(xiàn)組合繼承

1恬偷、先看第1個關(guān)鍵語句Father.call(this, age)。這句話的作用很明顯帘睦,是在Child()執(zhí)行時袍患,當執(zhí)行到Father()就把this強行綁定到Child函數(shù)的上下文。我們知道函數(shù)內(nèi)用聲明在this下的屬性/方法竣付,是屬于實例的诡延,和this相關(guān)的就只和實例相關(guān)。在這里實例化new Child(30,”上海浦東”) 的時候古胆,this.age=age執(zhí)行時this指向Child的實例肆良,所以最終Child的實例既擁有age屬性又擁有address筛璧,也就是說子類的實例得到(繼承)了父類的屬性。
Father.call(this, age)解決了屬性/方法定義在實例上的情形惹恃,那么下兩句關(guān)鍵語句解決的就是屬性/方法定義在函數(shù)原型上的情形夭谤。
2、看第2個關(guān)鍵語句Child.prototype=new Father()巫糙。這句話首先創(chuàng)建了一個父類實例朗儒,此時這個Father父類的實例是{age:undefined}對象;然后讓Child.prototype指向這個對象参淹,Child.prototype是干嘛的醉锄,默認情況下Child.prototype可是Child所有實例的原型,把它指向Father的實例意義就是讓Child的所有實例的原型指向Father的某一個實例(或者說讓Father的一個實例成為Child所有實例的原型)浙值。那么Child子類的實例就可以順著原型鏈訪問到屬于Father原型上的屬性/方法了恳不。原型鏈如下圖:
3、第3個關(guān)鍵句Child.prototype.constructor=Child是個細節(jié)开呐。默認情況下Child.prototype.constructor就是等于Child的(Child.prototype是{constructor:f}這么一個對象)烟勋,而第2個關(guān)鍵語句Child.prototype=new Father()執(zhí)行完,Child.prototype就被改變了筐付,此時上面instance的constructor就會是Father卵惦,子類實例的構(gòu)造器怎么能是父類呢,顯然不對家妆。所以需要顯式的給constructor重新賦值Child。
題外話冕茅,為什么instance.constructor會是Father呢伤极?constructor默認是構(gòu)造函數(shù)獨有的屬性,也就是普通對象是沒有的姨伤,instance是{age:30,address:”上海浦東”}對象哨坪,不是函數(shù),所以沒有constructor乍楚,就要去它原型上找当编,原型是new Father()出來的對象,也不是函數(shù)徒溪,就要再去上一級原型上找忿偷,也就是去Father.prototype上找,而Father.prototype.constructor就是Father臊泌。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鲤桥,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子渠概,更是在濱河造成了極大的恐慌茶凳,老刑警劉巖嫂拴,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異贮喧,居然都是意外死亡筒狠,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門箱沦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辩恼,“玉大人,你說我怎么就攤上這事饱普≡舜欤” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵套耕,是天一觀的道長谁帕。 經(jīng)常有香客問我,道長冯袍,這世上最難降的妖魔是什么匈挖? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮康愤,結(jié)果婚禮上儡循,老公的妹妹穿的比我還像新娘。我一直安慰自己征冷,他們只是感情好择膝,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著检激,像睡著了一般肴捉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上叔收,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天齿穗,我揣著相機與錄音,去河邊找鬼饺律。 笑死窃页,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的复濒。 我是一名探鬼主播脖卖,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼巧颈!你這毒婦竟也來了胚嘲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤洛二,失蹤者是張志新(化名)和其女友劉穎馋劈,沒想到半個月后攻锰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡妓雾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年娶吞,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片械姻。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡妒蛇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出楷拳,到底是詐尸還是另有隱情绣夺,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布欢揖,位于F島的核電站陶耍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏她混。R本人自食惡果不足惜烈钞,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坤按。 院中可真熱鬧毯欣,春花似錦、人聲如沸臭脓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽来累。三九已至砚作,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間佃扼,已是汗流浹背偎巢。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工蔼夜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留兼耀,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓求冷,卻偏偏與公主長得像瘤运,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子匠题,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

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