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
沒有留言:
張貼留言