2021年8月16日 星期一

Javascript 的 class 繼承的注意事項

 Javascript 的 class 繼承的注意事項

前言

  在上一次的 完整的 JavaScript 使用 Class 的範例 沒提到繼承相關的語法,由於本身設計的習慣不太愛用繼承的特性,但最近抽空研究一下繼承,法現有的特性跟我想的不一樣,在此做個紀錄。


內容

  先看範例,如下

class BaseClass{
  call(){
    console.log('I am BaseClass' );
  }
}
class ExClass extends BaseClass{
  call(){
    console.log('I am ExClass' );
  }
}
class ExClass1 extends ExClass{
  call(){
    //Follow code will failed!
    //super.super.call();
    //
    super.call();
    console.log('I am ExClass1' );
  }
}
let a = new ExClass1();
a.call();


範例的繼承關係很簡單,BaseClass -> ExClass -> ExClass1 ,單純的喚起 call() ,因為繼承的關係會發生 override ,要喚起父類別可以透過 super ,但如果企圖從 ExClass1 喚起 BaseClass 的話這是不允許的!本以為可以透過 super.super 的方式來達成,但實際實驗卻是會有錯誤,這意思是 JavaScript 無法跨過兩次以上的繼承,雖然實務上應該不太會碰到,但還是要注意一下。


參考資料

[ developer.mozilla.org ] super


相關文章與資料

完整的 JavaScript 使用 Class 的範例

沒有留言:

張貼留言