ES5的繼承是通過prototype或構(gòu)造函數(shù)機制來實現(xiàn)畦韭。
ES5的繼承實質(zhì)上是先創(chuàng)建子類的實例對象,然后再將父類的方法添加到this上(Parent.apply(this))肛跌。
ES6的繼承機制實質(zhì)上是先創(chuàng)建父類的實例對象this(所以必須先調(diào)用父類的super()方法),然后再用子類的構(gòu)造函數(shù)修改this。具體為ES6通過class關(guān)鍵字定義類衍慎,里面有構(gòu)造方法转唉,類之間通過extends關(guān)鍵字實現(xiàn)繼承。子類必須在constructor方法中調(diào)用super方法稳捆,否則新建實例報錯赠法。因為子類沒有自己的this對象,而是繼承了父類的this對象乔夯,然后對其調(diào)用砖织。如果不調(diào)用super方法,子類得不到this對象末荐。
注意:super關(guān)鍵字指代父類的實例侧纯,即父類的this對象。在子類構(gòu)造函數(shù)中甲脏,調(diào)用super后眶熬,才可使用this關(guān)鍵字,否則報錯块请。