これは Harmony(ECMAScript 6) 提案の一部であり、実験段階の技術です。
この技術の仕様は安定していません。ブラウザ互換性の一覧表を確認してください。またこれらの構文や動作は、仕様変更などにより、新しいバージョンのブラウザでは変更される可能性があるという点に注意してください。
class 宣言は、プロトタイプベースの継承を使用した名前が付けられた新しいクラスを生成します。
class 式を使用してクラスを定義することもできます。
構文
class name [extends] {
// class body
}
説明
class 式と同様に、class 宣言の内部は strict mode で実行されます。
class 宣言は、hoisted されません (function 宣言とは異なります)。
例
単純な class 宣言
次の例では、はじめに Polygon という名前のクラスを定義し、次にそれを拡張して Square という名前のクラスを作成します。コンストラクタで使われている super() は、コンストラクタ内だけで使えることと、this キーワードが使用される前に呼び出されなくてはならないことに注意してください。
class Polygon {
constructor(height, width) {
this.name = 'Polygon';
this.height = height;
this.width = width;
}
}
class Square extends Polygon {
constructor(length) {
super(length, length);
this.name = 'Square';
}
}
仕様
| 仕様 | 状況 | コメント |
|---|---|---|
| ECMAScript 6 (ECMA-262) The definition of 'Class definitions' in that specification. |
勧告候補 | Initial definition. |
ブラウザ実装状況
| 機能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| 基本サポート | 42.0 | Available in the Nightly channel only (since February 2015) | ? | ? | ? |
| Array subclassing | 43.0 | 未サポート | ? | ? | ? |
| 機能 | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| 基本サポート | ? | 42.0 | Available in the Nightly channel only (since February 2015) | ? | ? | ? |
| Array subclassing | ? | 43.0 | 未サポート | ? | ? | ? |