JS的幾種繼承,從ES5到ES6君躺。

什么是繼承呢犹撒?繼承是指子類繼承父類的屬性和方法横腿,便于代碼的復(fù)用

原型繼承

function Parent() {

}

function Child() {

}

child.prototype = new Parent()

//使子類的原型等于父類的實(shí)例,此時(shí)child.prototype.constructor 為Parent函數(shù)對(duì)象

child.prototype.constructor = child //此時(shí)child.prototype.constructor 為child函數(shù)對(duì)象

原型繼承的特點(diǎn):

與其他后臺(tái)語言不同,其他后臺(tái)語言一般是拷貝繼承,把父類的屬性和方法拷貝一份到子類中供子類使用,而JS是把父類的原型放到子類實(shí)例的原型鏈上,是基于__prototype__原型鏈查找機(jī)制完成

子類可以重寫父類的方法并且會(huì)導(dǎo)致父類的其他實(shí)例也受影響

父類的私有或公有屬性和方法,最后都會(huì)變成子類中公有的屬性和方法

不能傳參,不能實(shí)現(xiàn)多繼承

call繼承

function Parent(name,age) {

}

function Child(name, age) {

? Parent.call(this, name, age) //在子類中調(diào)用父類的方法,并改變父類的this指向

}

可以將父類私有的變成子類私有的,但是不能訪問父類原型上的屬性和方法

可以傳參可以實(shí)現(xiàn)多繼承

不能實(shí)現(xiàn)函數(shù)的復(fù)用,每個(gè)子類實(shí)例都會(huì)重新調(diào)用父類實(shí)例函數(shù)

組合繼承

? function Parent(name,age) {

? }

? function Child(name, age) {

?? Parent.call(this, name, age) //在子類中調(diào)用父類的方法,并改變父類的this指向

? }

? Child.prototype = new parent()

父類私有的屬性和方法變成子類私有的屬性和方法,父類公有的屬性和方法變成子類共同的屬性和方法

函數(shù)可復(fù)用可傳參

調(diào)用了兩次父類構(gòu)造函數(shù)颓屑,生成了兩份實(shí)例

組合繼承優(yōu)化

function Parent(name,age) {

}

function Child(name, age) {

? Parent.call(this, name, age) *//在子類中調(diào)用父類的方法,并改變父類的this指向*

}

//var B = Object,create(A),以A為對(duì)象創(chuàng)建B對(duì)象,B對(duì)象繼承A的所有屬性和方法*

Child.prototype = Object.create(Parent)

Child.prototype.constructor = Child

這個(gè)繼承解決了上面繼承的所有缺點(diǎn),是ES5最完美的繼承方式,比較推薦

ES6繼承

class Parent {

? constructor(name, age) {

?? this.name = name

?? this.age = age

? }

}

class Child extends Parent {

? constructor(name,age) {

?? super(name, age) //通過super調(diào)用父類方法

? }

}

用類來定義構(gòu)造函數(shù),在constructor()里面定義構(gòu)造函數(shù)的私有屬性

通過extends實(shí)現(xiàn)類的繼承,在子類的constructor()的第一行寫下super(),來實(shí)現(xiàn)子類的私有屬性繼承父類的私有屬性

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市耿焊,隨后出現(xiàn)的幾起案子揪惦,更是在濱河造成了極大的恐慌,老刑警劉巖罗侯,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件器腋,死亡現(xiàn)場離奇詭異,居然都是意外死亡钩杰,警方通過查閱死者的電腦和手機(jī)纫塌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來讲弄,“玉大人措左,你說我怎么就攤上這事”艹” “怎么了怎披?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瓶摆。 經(jīng)常有香客問我凉逛,道長,這世上最難降的妖魔是什么群井? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任状飞,我火速辦了婚禮,結(jié)果婚禮上书斜,老公的妹妹穿的比我還像新娘诬辈。我一直安慰自己,他們只是感情好菩佑,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布自晰。 她就那樣靜靜地躺著凝化,像睡著了一般稍坯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天瞧哟,我揣著相機(jī)與錄音混巧,去河邊找鬼。 笑死勤揩,一個(gè)胖子當(dāng)著我的面吹牛咧党,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播陨亡,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼傍衡,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了负蠕?” 一聲冷哼從身側(cè)響起蛙埂,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎遮糖,沒想到半個(gè)月后绣的,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡欲账,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年屡江,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赛不。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惩嘉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出俄删,到底是詐尸還是另有隱情宏怔,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布畴椰,位于F島的核電站臊诊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏斜脂。R本人自食惡果不足惜抓艳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望帚戳。 院中可真熱鬧玷或,春花似錦、人聲如沸片任。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽对供。三九已至位他,卻和暖如春氛濒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鹅髓。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工舞竿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人窿冯。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓骗奖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親醒串。 傳聞我的和親對(duì)象是個(gè)殘疾皇子执桌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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

  • 繼承6種套餐 參照紅皮書,JS繼承一共6種 1.原型鏈繼承 核心思想:子類的原型指向父類的一個(gè)實(shí)例 Son.pro...
    燈不梨喵閱讀 3,113評(píng)論 1 2
  • 繼承 Javascript中繼承都基于兩種方式:1.通過原型鏈繼承芜赌,通過修改子類原型的指向鼻吮,使得子類實(shí)例通過原型鏈...
    LeoCong閱讀 293評(píng)論 0 0
  • 繼承是面向?qū)ο笾幸粋€(gè)比較核心的概念。其他正統(tǒng)面向?qū)ο笳Z言都會(huì)用兩種方式實(shí)現(xiàn)繼承:一個(gè)是接口實(shí)現(xiàn)较鼓,一個(gè)是繼承椎木。而EC...
    lovelydong閱讀 368評(píng)論 0 2
  • vw、vh博烂、rem香椎、em、px的區(qū)別 pxpx是絕對(duì)單位禽篱,1px就是一個(gè)像素點(diǎn) emem是相對(duì)單位畜伐,是相對(duì)于父級(jí)的...
    郝晨光閱讀 1,242評(píng)論 0 12
  • 這一周同樣比較忙碌,但也比較頹廢躺率,連續(xù)3天出差玛界,所以運(yùn)動(dòng)和手帳都沒有好好做。 一悼吱、目標(biāo)回顧 本周制定目標(biāo)5個(gè)慎框,實(shí)際...
    幽幽86129閱讀 404評(píng)論 0 0