Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【JavaScript ECMAScript】ReferenceError: super() called twice in derived class constructorエラーの使い方

ReferenceError: super() called twice in derived class constructorエラーの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

ReferenceError: super() called twice in derived class constructorオブジェクトは、JavaScriptにおいて、あるクラスが他のクラスを継承して作られた「派生クラス」の「コンストラクタ」内で、親クラスのコンストラクタを呼び出すsuper()が複数回実行された場合に発生するエラーを表すオブジェクトです。

このエラーは、クラス継承の基本的なルールに反していることを示しています。JavaScriptのクラス構文では、派生クラスのコンストラクタを使用する際、自身のプロパティにアクセスする前に必ず一度だけsuper()を呼び出す必要があります。これは、親クラスの初期化処理を適切に実行し、thisキーワードが正しく設定されるために不可欠な手順です。super()を2回以上呼び出すことは、親クラスの初期化を不必要に重ねることであり、予期しない動作やリソースの無駄遣いにつながる可能性があるため、JavaScriptの実行環境はこの操作をエラーとして検知し、プログラムの実行を停止します。

このエラーを解決するには、派生クラスのコンストラクタ内を注意深く確認し、super()の呼び出しが一度だけになっているかを確認してください。通常、super()はコンストラクタの先頭で呼び出すのが最も安全で一般的な記述方法です。

構文(syntax)

1class BaseClass {
2  constructor() {
3    // 基底クラスのコンストラクタ
4  }
5}
6
7class DerivedClass extends BaseClass {
8  constructor() {
9    super(); // 1回目のsuper()呼び出し
10    // ...
11    super(); // 2回目のsuper()呼び出し (ここでReferenceErrorが発生します)
12  }
13}

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

関連コンテンツ

関連プログラミング言語