Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2016年3月.
constructor メソッドは、クラスで作成されたオブジェクトインスタンスの生成と初期化を行うための特殊なメソッドです。
メモ: このページでは constructor の構文を紹介します。すべてのオブジェクトに存在する constructor プロパティについては、 Object.prototype.constructor を参照してください。
追加の構文上の制約があります。
コンストラクターを使用すると、インスタンス化されたオブジェクトに対して、他のメソッドを呼び出す前に行う必要のある独自の初期化を行うことができます。
独自のコンストラクターを提供しなかった場合は、既定のコンストラクターが提供されます。クラスが基底クラスである場合、既定のコンストラクターは空です。
クラスが派生クラスの場合、既定のコンストラクターが親コンストラクターを呼び出し、与えられた引数を渡します。
それがこのようなコードを動作させることができます。
ValidationError クラスは、独自の初期化を行う必要がないため、明示的なコンストラクターは必要ありません。 既定のコンストラクターは、与えられた引数から親の Error の初期化を行います。
ただし、独自のコンストラクターを提供し、クラスが親クラスから派生している場合は、 super() を使用して親クラスのコンストラクターを明示的に呼び出す必要があります。 例えば、以下のようになります。
クラスで new を使用すると、以下の段階を踏みます。
constructor 本体の中では、 this で作成されるオブジェクトにアクセスしたり new で呼び出されるクラスに new.target でアクセスしたりすることができます。メソッド(ゲッター、セッターを含む)とプロトタイプチェーン は constructor が実行される前に this で初期化されているので、スーパークラスのコンストラクターからサブクラスのメソッドにアクセスすることもできることに注意してください。しかし、これらのメソッドが this を使用している場合、 this はまだ完全に初期化されていません。これは、派生クラスのパブリックフィールドを読むと undefined になり、プライベートフィールドを読むと TypeError になるということです。
constructor メソッドは返値を持つことができます。基底クラスはコンストラクターから何らかの値を返すことができますが、派生クラスはオブジェクトまたは undefined を返すか、 TypeError を発生させなければなりません。
親クラスのコンストラクターがオブジェクトを返した場合、そのオブジェクトは派生クラスのクラスフィールドを定義する際の値として使用します。このトリックは「返値の上書き」と呼ばれ、派生クラスのフィールド(プライベートなものも含む)を無関係なオブジェクトに定義することができます。
constructor は通常のメソッド構文に従うので、デフォルト引数や残余引数などをすべて使用することができます。
コンストラクターはリテラル名でなければなりません。算出プロパティ名はコンストラクターにはなれません。
非同期メソッド、ジェネレーターメソッド、アクセサ、クラスフィールドは constructor と名付けることは禁止されています。プライベートな名前を #constructor と呼び出すことはできません。 constructor という名前のメンバーはプレーンなメソッドでなければなりません。
このコードスニペットは、classes sample (ライブデモ) から転載しています。
super() は現在のクラスのプロトタイプであるコンストラクターを呼び出します。現在のクラスのプロトタイプを変更した場合、 super() は新しいプロトタイプのコンストラクターを呼び出します。現在のクラスの prototype プロパティを変更しても、 super() が呼び出すコンストラクターには影響しません。
| ECMAScript® 2027 Language Specification # sec-static-semantics-constructormethod |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025年9月18日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.