閱讀Dr. Axel Rauschmayer's blog on ES6 classes,我明白,一個派生類時沒有提供什麼時候需要從構造函數調用`super`?
constructor(...args) {
super(...args);
}
我也明白,如果我想在構造函數中使用this
我首先需要調用super
下面的默認構造函數,否則this
會尚未初始化(拋出一個ReferenceError)。
constructor(width, height) {
this.width = width; // ReferenceError
super(width, height);
this.height = height; // no error thrown
...
}
下面的假設是否正確? (如果沒有,可以請你解釋下我應該明確地調用super
條件)
派生類的,我只需要顯式調用super
時...
- 我需要從訪問
this
在構造函數中 - 父類的構造需要不同的參數,然後派生類的構造
還有沒有其他的時候,我應該包括一個電話到超類的構造函數?
不,沒有。你想爲這種說法提供什麼樣的「證明」? –
當你讓一個類像'class ABC extends DEF {...'那麼你必須把'super(...args);',因爲你剛纔用'extends DEF'表示你想從它派生出來。如果你不是從任何類派生的,那麼就不要在ABC的構造函數中放入'超級'。就這麼簡單。 – Azamantes
@Azamantes:如果父類與子類具有相同的參數,則不需要調用「super」。 –