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