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 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 |
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.