では「継承と super を使いつつ、アロー関数と通常メソッドを混ぜる複合例」を作ってみましょう。
例:Animal → Dog クラス
class Animal {
constructor(name) {
this.name = name;
}
// ✅ 通常メソッド(親クラスの基本動作)
speak() {
console.log(`${this.name} が鳴いた`);
}
}
class Dog extends Animal {
constructor(name) {
super(name); // 親クラスのコンストラクタ呼び出し
}
// ✅ 通常メソッド(superを使って親の処理を拡張)
speak() {
super.speak(); // 親の speak を呼ぶ
console.log("ワン!");
}
// ✅ アロー関数(イベントハンドラやコールバック用)
bark = () => {
console.log(`${this.name} が元気にワンワン!`);
};
}
// --- 動作確認 ---
const d = new Dog("ポチ");
d.speak(); // 親と子の両方の処理が実行される
// 出力:
// ポチ が鳴いた
// ワン!
// コールバックに渡しても this が壊れない
setTimeout(d.bark, 1000);
// 1秒後: ポチ が元気にワンワン!
JavaScript💡 解説
speak(通常メソッド)super.speak()を呼んで親クラスの処理を拡張できる。- 継承でのオーバーライドは通常メソッドで書くのが基本。
bark(アロー関数)- コールバックに渡しても
thisが固定されているので安全。 - イベントハンドラや非同期処理に便利。
- コールバックに渡しても
✅ まとめ
- 親クラスの処理を拡張する → 通常メソッド(superが必要だから)
- イベントハンドラやコールバックで使う → アロー関数(this固定が便利だから)
- 両方を組み合わせることで「継承の恩恵」と「イベント処理の安全性」を両立できる。
👉 ここまでで「継承+super」と「アロー関数」の役割分担が整理できました。
