これは Harmony(ECMAScript 6) 提案の一部であり、実験段階の技術です。
この技術の仕様は安定していません。ブラウザ互換性の一覧表を確認してください。またこれらの構文や動作は、仕様変更などにより、新しいバージョンのブラウザでは変更される可能性があるという点に注意してください。
class 式は、ECMAScript 6でクラスを定義する方法の 1 つです。function 式と同じように、class 式は名前を付けることも付けないこともできます。名前を付けた場合、クラス名はクラス本体のみローカルです。 JavaScript のクラスはプロトタイプベース継承が使われます。
構文
var MyClass = class [className] [extends] {
// class body
};
説明
class 式は、class 文と同じような構文を持っています。しかし、class 式ではクラス名(結合識別子; "binding identifier")を省略できますが、class 文では省略できません。
class 文のように、class 式の class 本体は strict mode で実行されます。
例
簡単な class 式
これは、簡単な匿名 class 式です。変数 "Foo" を使用して参照できます。
var Foo = class {
constructor() {}
bar() {
return "Hello World!";
}
};
var instance = new Foo();
instance.bar(); // "Hello World!"
名前付き class 式
class 本体内で現在の class を参照したい場合は、名前付き class 式を作成してください。この名前は、class 式自身のスコープ内でのみ見えます。
// TBD
var Foo = class NamedFoo {
}
仕様
| 仕様 | 状態 | コメント |
|---|---|---|
| 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) | ? | ? | ? |
| 機能 | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| 基本サポート | ? | 42.0 | Available in the Nightly channel only (since February 2015) | ? | ? | ? |