1. 開発者向けのウェブ技術
  2. JavaScript
  3. JavaScript リファレンス
  4. 文と宣言
  5. class

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

class

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2017年3月以降、すべてのブラウザーで利用可能です。

class 宣言は、指定された名前の新しい class を作成します。

クラス式 を使ってクラスを定義できます。

試してみましょう

class Polygon {
 constructor(height, width) {
 this.area = height * width;
 }
}
console.log(new Polygon(4, 3).area);
// 予想される結果: 12

構文

js
class name {
 // クラス本体
}
class name extends otherName {
 // クラス本体
}

解説

クラス宣言のクラス本体は 厳格モード で実行されます。クラス宣言は let と非常によく似ています。

  • class 宣言は、関数だけでなくブロックにもスコープされます。

  • class 宣言は、宣言された場所に到達した後にのみアクセスできます(一時的デッドゾーン を参照)。このため、class 宣言は一般的に 非ホイスティング とみなされます(関数宣言 とは異なります)。

  • スクリプトの最上位レベルで宣言された class 宣言は、globalThis にプロパティを作成しません(関数宣言 とは異なります)。

  • class 宣言は、同じスコープ内の他の宣言によって 再宣言 できません。

js
class Foo {
 static {
 Foo = 1; // TypeError: Assignment to constant variable.
 }
}
class Foo2 {
 bar = (Foo2 = 1); // TypeError: Assignment to constant variable.
}
class Foo3 {}
Foo3 = 1;
console.log(Foo3); // 1

クラス宣言

次の例では、はじめに Rectangle という名前のクラスを定義し、次にそれを拡張して FilledRectangle という名前のクラスを作成します。

なお、コンストラクター (constructor) で使われている super() は、コンストラクター内でのみ使えること、 this キーワードの使用に呼び出さなくてはならないことに注意してください。

js
class Rectangle {
 constructor(height, width) {
 this.name = "Rectangle";
 this.height = height;
 this.width = width;
 }
}
class FilledRectangle extends Rectangle {
 constructor(height, width, color) {
 super(height, width);
 this.name = "Filled rectangle";
 this.color = color;
 }
}

仕様書

仕様書
ECMAScript® 2027 Language Specification
# sec-class-definitions

ブラウザーの互換性

関連情報

MDN の改良に協力

協力方法を知る

このページは MDN の貢献者によって に最終更新されました。

AltStyle によって変換されたページ (->オリジナル) /