class 式
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2016年3月.
class キーワードを使用すると、式内でクラスを定義することができます。
クラスは、 class 宣言 を使用して定義することもできます。
試してみましょう
const Rectangle = class {
constructor(height, width) {
this.height = height;
this.width = width;
}
area() {
return this.height * this.width;
}
};
console.log(new Rectangle(5, 8).area());
// 予想される結果: 40
構文
js
class {
// クラス本体
}
class name {
// クラス本体
}
解説
class 式は、class 宣言とよく似ており、構文もほぼ同じです。 class 宣言と同様に、 class 式の本体は厳格モードで実行されます。 class 式と class 宣言の主な違いは、クラス名です。 class 式ではこのクラス名を省略できるため、無名クラスを作成することができます。クラス式はクラスを再定義できますが、 class 宣言を使用してクラスを再宣言すると、 SyntaxError が発生します。詳細については、クラスの章を参照してください。
例
>簡単なクラス式
以下は、名前のない簡単なクラス式です。変数 Foo を使って参照できます。
js
const Foo = class {
constructor() {}
bar() {
return "Hello World!";
}
};
const instance = new Foo();
instance.bar(); // "Hello World!"
Foo.name; // "Foo"
名前付きクラス式
クラス内部で現在のクラスを参照したい場合は、名前付きクラス式を作成してください。この名前は、そのクラス式自身のスコープ内だけで見ることができます。
js
const Foo = class NamedFoo {
constructor() {}
whoIsThere() {
return NamedFoo.name;
}
};
const bar = new Foo();
bar.whoIsThere(); // "NamedFoo"
NamedFoo.name; // ReferenceError: NamedFoo is not defined
Foo.name; // "NamedFoo"
仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-class-definitions> |
ブラウザーの互換性
Loading…