JS繼承的六種方式

一.構(gòu)造繼承

1.基本思想

通過使用apply,call方法可以在新創(chuàng)建的對象上執(zhí)行構(gòu)造函數(shù),用父類的構(gòu)造函數(shù)實現(xiàn)子類的實例

2.具體實現(xiàn)

function sub(){

????Super.call(this); // 調(diào)用父類

}

3.優(yōu)缺點

——優(yōu)點: 簡單明了逊抡,直接繼承構(gòu)造函數(shù)的屬性和方法

——缺點: 無法繼承原型鏈上的屬性和方法

二.原型鏈繼承

1.基本思想

利用原型鏈來實現(xiàn)繼承

2.具體實現(xiàn)

function Sub(){}

Sub.prototype = new Super()

Sub.prototype.constructor = Sub

3.優(yōu)缺點

——優(yōu)點: 簡單明了宇立,實例是子類的實例毛萌,也是父類的實例

——缺點: 所有子類的實例的原型都共享同一個超類實例的屬性和方法

三.組合繼承

1.基本思想

結(jié)合構(gòu)造函數(shù)和原型鏈來實現(xiàn)繼承

2.具體實現(xiàn)

function Sub(){

? ? ? ? Super.call(this)

}

Sub.prototype = new Super()

Sub.prototype.constructor = Sub


3.優(yōu)缺點

——優(yōu)點: 解決了構(gòu)造函數(shù)和原型鏈繼承的問題

——缺點: 事件上子類上會擁有超類的兩份屬性扣蜻,只是子類的屬性覆蓋了超類的屬性

四.原型式繼承

1.基本思想

通過Object.create(obj)實現(xiàn)

2.具體實現(xiàn)

if(?typeof Object.prototype.create != 'function'? ){

????????Object.prototype.create = function(obj){

? ? ? ? ? ? ? ? function F(){}

? ? ? ? ? ? ? ? F.prototype = obj;

? ? ? ? ? ? ? ? return new F()

}}


3.優(yōu)缺點

——優(yōu)點: 直接通過對象生成一個繼承該對象的對象

——缺點: 沒有類的概念

五.寄生式繼承

1.基本思想

創(chuàng)建一個僅僅用于封裝繼承過程的函數(shù),然后在內(nèi)部以某種方式增強對象县貌,最后返回對象

2.具體實現(xiàn)

if(?typeof Object.prototype.create != 'function'??){????????

????????????????Object.prototype.create = function(obj){? ? ? ? ? ? ? ?

????????????????????????function F(){} ? ? ? ? ? ? ? ?

????????????????????????F.prototype = obj; ? ? ? ? ? ? ? ?

????????????????????????return new F()

}}

function createSubOobj(superInstance){

? ? ? ? var clone = Object.create(superInstance)

? ? ? ? return clone

}

3.優(yōu)缺點

——優(yōu)點: 原型式繼承的一種拓展

——缺點: 還是沒有類的概念

六.寄生組合式繼承

1.基本思想

集合寄生式繼承和組合式繼承缸夹,完美實現(xiàn)不帶兩份超類屬性的繼承方式

2.具體實現(xiàn)

function inheritPrototype(Super,Sub){

? ? ? ? var superProtoClone = Object.create(Super.prototype)

? ? ? ? superProtoClone.constructor = Sub

? ? ? ? Sub.prototype = Super

}

function Sub(){

? ? Super.call(this)

}

inheritPrototype(Super,Sub)


3.優(yōu)缺點

——優(yōu)點: 完美實現(xiàn)不帶兩份超類屬性的繼承方式

——缺點: 太過繁瑣



原文鏈接:https://blog.csdn.net/caijixin/article/details/78295676

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末痪寻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子虽惭,更是在濱河造成了極大的恐慌橡类,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芽唇,死亡現(xiàn)場離奇詭異顾画,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門亲雪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人疚膊,你說我怎么就攤上這事义辕。” “怎么了寓盗?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵灌砖,是天一觀的道長。 經(jīng)常有香客問我傀蚌,道長基显,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任善炫,我火速辦了婚禮撩幽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘箩艺。我一直安慰自己窜醉,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布艺谆。 她就那樣靜靜地躺著榨惰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪静汤。 梳的紋絲不亂的頭發(fā)上琅催,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音虫给,去河邊找鬼藤抡。 笑死,一個胖子當(dāng)著我的面吹牛抹估,可吹牛的內(nèi)容都是我干的杰捂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼棋蚌,長吁一口氣:“原來是場噩夢啊……” “哼嫁佳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起谷暮,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蒿往,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后湿弦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓤漏,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蔬充。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝶俱。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖饥漫,靈堂內(nèi)的尸體忽然破棺而出榨呆,到底是詐尸還是另有隱情,我是刑警寧澤庸队,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布积蜻,位于F島的核電站,受9級特大地震影響彻消,放射性物質(zhì)發(fā)生泄漏竿拆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一宾尚、第九天 我趴在偏房一處隱蔽的房頂上張望丙笋。 院中可真熱鬧,春花似錦煌贴、人聲如沸不见。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽稳吮。三九已至,卻和暖如春井濒,著一層夾襖步出監(jiān)牢的瞬間灶似,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工瑞你, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留酪惭,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓者甲,卻偏偏與公主長得像春感,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子虏缸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

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

  • 基于這篇文章的一些名稱約定: 上面的約定應(yīng)該是比較合理的鲫懒,如果難以理解,可以查看黯羽輕揚:JS學(xué)習(xí)筆記2_面向?qū)ο?..
    一直玩編程閱讀 527評論 1 7
  • * 約定 functionFun(){ // 私有屬性 varval = 1;// 私有基本屬性 vararr =...
    小董兒閱讀 296評論 0 0
  • 1.原型鏈刽辙。2.構(gòu)造函數(shù)窥岩。3.組合繼承。4.寄生組合繼承宰缤。5.原型式颂翼。6.寄生式晃洒。 1、簡單原型鏈: 核心:拿父類...
    overflow_hidden閱讀 690評論 0 0
  • 在獲取Cell中控件相對于UIControllerView的位置朦乏,借助了UIView中的方法 獲取當(dāng)前Cell的位...
    Cooperluffy丨路飛閱讀 1,331評論 0 1
  • 題目 題目大意:將兩個有序數(shù)組合并為一個球及,并放到第一個數(shù)組內(nèi),其中第一個數(shù)組已經(jīng)有足夠的空間儲存兩個數(shù)組的值呻疹。 從...
    沉默的叔叔閱讀 158評論 0 0