class 表示式

Baseline 已廣泛支援

此特性已經非常成熟,並且適用於許多裝置和瀏覽器版本。自 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());
// Expected output: 40

語法

js
class {
  // class body
}
class name {
  // class body
}

注意: 表示式語句不能以關鍵字 class 開頭,以避免與 class 宣告產生歧義。class 關鍵字僅在不能接受語句的上下文中才作為表示式的開頭。

描述

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"

規範

規範
ECMAScript® 2026 語言規範
# sec-class-definitions

瀏覽器相容性

另見