ES6入門之class繼承

基本概念

Class 實(shí)現(xiàn)繼承主要依賴extends、super、static响蓉。


1.extends關(guān)鍵字:

class Point {
 }
class ColorPoint extends Point {
}

上面代碼定義了一個(gè)ColorPoint類,該類通過extends關(guān)鍵字哨毁,繼承了Point類的所有屬性和方法枫甲。但是由于沒有部署任何代碼,所以這兩個(gè)類完全一樣,等于復(fù)制了一個(gè)Point類想幻。
2.super 關(guān)鍵字
super這個(gè)關(guān)鍵字粱栖,既可以當(dāng)作函數(shù)使用,也可以當(dāng)作對(duì)象使用脏毯。在這兩種情況下闹究,它的用法完全不同。
第一種情況食店,super作為函數(shù)調(diào)用時(shí)渣淤,代表父類的構(gòu)造函數(shù)。ES6 要求吉嫩,子類的構(gòu)造函數(shù)必須執(zhí)行一次super函數(shù)砂代。

class A {}
class B extends A {
  constructor() {
    super();
  }
}

上面代碼中,子類B的構(gòu)造函數(shù)之中的super()率挣,代表調(diào)用父類的構(gòu)造函數(shù)刻伊。這是必須的,否則 JavaScript 引擎會(huì)報(bào)錯(cuò)椒功。

注意捶箱,super雖然代表了父類A的構(gòu)造函數(shù),但是返回的是子類B的實(shí)例动漾,即super內(nèi)部的this指的是B丁屎,因此super()在這里相當(dāng)于A.prototype.constructor.call(this)。
作為函數(shù)時(shí)旱眯,super()只能用在子類的構(gòu)造函數(shù)之中晨川,用在其他地方就會(huì)報(bào)錯(cuò)。

第二種情況删豺,super作為對(duì)象時(shí)共虑,在普通方法中,指向父類的原型對(duì)象呀页;在靜態(tài)方法中妈拌,指向父類。

class A {
  p() {
    return 2;
  }
}
class B extends A {
  constructor() {
    super();
    console.log(super.p()); // 2
  }
}
let b = new B();

上面代碼中蓬蝶,子類B當(dāng)中的super.p()尘分,就是將super當(dāng)作一個(gè)對(duì)象使用。這時(shí)丸氛,super在普通方法之中培愁,指向A.prototype,所以super.p()就相當(dāng)于A.prototype.p()缓窜。

這里需要注意定续,由于super指向父類的原型對(duì)象谍咆,所以定義在父類實(shí)例上的方法或?qū)傩裕菬o法通過super調(diào)用的香罐。
ES6 規(guī)定卧波,通過super調(diào)用父類的方法時(shí)时肿,super會(huì)綁定子類的this庇茫。

3.static 靜態(tài)方法

class Parent {
  static myMethod(msg) {
    console.log('static', msg);
  }
  myMethod(msg) {
    console.log('instance', msg);
  }
}  
class Child extends Parent {
  static myMethod(msg) {
    super.myMethod(msg);
  }
  myMethod(msg) {
    super.myMethod(msg);
  }
}
Child.myMethod(1); // static 1
var child = new Child();
child.myMethod(2); // instance 2

上面代碼中,super在靜態(tài)方法之中指向父類螃成,在普通方法之中指向父類的原型對(duì)象旦签。

Object.getPrototypeOf方法可以用來從子類上獲取父類。
Object.getPrototypeOf(Child) === Parent // true
因此寸宏,可以使用這個(gè)方法判斷宁炫,一個(gè)類是否繼承了另一個(gè)類。

以上都是個(gè)人理解如有不對(duì)之處還望指正交流氮凝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末羔巢,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子罩阵,更是在濱河造成了極大的恐慌竿秆,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稿壁,死亡現(xiàn)場(chǎng)離奇詭異幽钢,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)傅是,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門匪燕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人喧笔,你說我怎么就攤上這事帽驯。” “怎么了书闸?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵界拦,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng)根竿,這世上最難降的妖魔是什么徒溪? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蛉威,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘走哺。我一直安慰自己蚯嫌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著择示,像睡著了一般束凑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上栅盲,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天汪诉,我揣著相機(jī)與錄音,去河邊找鬼谈秫。 笑死扒寄,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拟烫。 我是一名探鬼主播该编,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼硕淑!你這毒婦竟也來了课竣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤置媳,失蹤者是張志新(化名)和其女友劉穎于樟,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體半开,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡隔披,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了寂拆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奢米。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖纠永,靈堂內(nèi)的尸體忽然破棺而出鬓长,到底是詐尸還是另有隱情,我是刑警寧澤尝江,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布涉波,位于F島的核電站,受9級(jí)特大地震影響炭序,放射性物質(zhì)發(fā)生泄漏啤覆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一惭聂、第九天 我趴在偏房一處隱蔽的房頂上張望窗声。 院中可真熱鬧,春花似錦辜纲、人聲如沸笨觅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)见剩。三九已至杀糯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間苍苞,已是汗流浹背固翰。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留柒啤,地道東北人倦挂。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓畸颅,卻偏偏與公主長(zhǎng)得像担巩,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子没炒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

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

  • class的基本用法 概述 JavaScript語(yǔ)言的傳統(tǒng)方法是通過構(gòu)造函數(shù)涛癌,定義并生成新對(duì)象。下面是一個(gè)例子: ...
    呼呼哥閱讀 4,096評(píng)論 3 11
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法送火,類相關(guān)的語(yǔ)法拳话,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法种吸,異常的語(yǔ)法弃衍,線程的語(yǔ)...
    子非魚_t_閱讀 31,639評(píng)論 18 399
  • 今天早晨 物業(yè)辦公室 一個(gè)當(dāng)過兵的業(yè)主 電活問 八一節(jié) 為何沒點(diǎn)活動(dòng) 再看滿屏八一祝福 就懷疑自已 是個(gè)假兵 回到...
    第一閑人閱讀 151評(píng)論 0 3
  • 當(dāng)你的世界下起了雨,我的世界一定是晴朗的坚俗,因?yàn)槌搜劾锏谋瘋刀ⅲ夷芙o你的,也只有是格外晴朗猖败。 情詩(shī)一《看你》 年少...
    立黃昏閱讀 1,410評(píng)論 116 89
  • 不知不覺速缆,加入007寫作活動(dòng)已經(jīng)兩個(gè)月了,今天是我的第八篇文章恩闻。 從小到大艺糜,寫作對(duì)于我來說都是一件痛苦的事情,我就...
    vinlson閱讀 646評(píng)論 1 50