Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年9月以降、すべてのブラウザーで利用可能です。
メソッド定義は、オブジェクト初期化子内で関数プロパティを定義するための簡略化された構文です。また、クラス内でも使用できます。
以下のようなコードがあったとします。
これを以下のように短縮することができます。
この構文を使用して定義されたプロパティは、作成されたオブジェクトの自身のプロパティであり、通常のプロパティと同様に構成不可、列挙可能、書き込み可能です。
function*、async function、async function* のプロパティはすべて固有のメソッド構文があります。下記にある例を参照してください。
ただし、メソッド構文は、値として関数を持つ通常のプロパティとは同等ではないことに注意してください。意味論的に、違いがあります。これにより、オブジェクトリテラルで定義されたメソッドは、クラス内のメソッドとより一貫性を持つようになります。
メソッドはコンストラクターにはなれません。コンストラクターとしてインスタンス化しようとすると、 TypeError が発生します。 一方、関数として作成されたプロパティはコンストラクターとして使用できます。
メソッドとして定義された関数のみが super キーワードにアクセスすることができます。 super.prop は、メソッドが初期化されたオブジェクトのプロトタイプ上でプロパティを検索します。
まったく同じ構文を使用して、クラスインスタンスで利用できるパブリックインスタンスメソッドを定義することができます。クラス内では、メソッド間を区切るカンマは必要ありません。
パブリックインスタンスメソッドはクラスの prototype プロパティ上に定義されるため、そのクラスのすべてインスタンスで共有されます。これらは書き込み可能、列挙不可、構成不可です。
インスタンスメソッド内では、this と super は通常のメソッドと同様に動作します。通常、this はインスタンス自体を参照します。サブクラスでは、super を使用することで、メソッドが添付されたオブジェクトのプロトタイプにアクセスでき、スーパークラスのメソッドを呼び出すことができます。
静的メソッドとプライベートメソッドは似た構文を使用します。これらは static およびプライベート要素のページで説明されています。
メソッド構文は算出プロパティ名にも対応しています。
ジェネレータープロパティ名の前にアスタリスク (*) が必要であることに注意してください。(すなわち、 * g(){} は動作しますが、 g *(){} は動作しません。)
| ECMAScript® 2027 Language Specification # sec-method-definitions |
ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。
より良いインターネットのための青写真。
このコンテンツの一部は、©1998–2026 個人の mozilla.org 協力者です。コンテンツはクリエイティブ・コモンズ・ライセンスのもとで利用できます。