類表達式是用來定義類的一種語法。和函數表達式相同的一點是,類表達式可以是命名也可以是匿名的。如果是命名類表達式,這個名字只能在類體內部才能訪問到。JavaScript 的類也是基於原型繼承的。
語法
const MyClass = class [className] [extends] {
// class body
};
描述
類表達式的語法和類語句的語法很類似,只是在類表達式中,你可以省略掉類名,而類語句中不能。
和類聲明一樣,類表達式中的代碼也是強制嚴格模式的。
示例
使用類表達式
下面的代碼使用類表達式語法創建了一個匿名類,然後賦值給變量 Foo
。
let Foo = class {
constructor() {}
bar() {
return "Hello World!";
}
};
let instance = new Foo();
instance.bar();
// "Hello World!"
命名類表達式
如果你想在類體內部也能引用這個類本身,那麼你就可以使用命名類表達式,並且這個類名只能在類體內部訪問。
const Foo = class NamedFoo {
constructor() {}
whoIsThere() {
return NamedFoo.name;
}
}
let bar = new Foo();
bar.whoIsThere();
// "NamedFoo"
NamedFoo.name;
// ReferenceError: NamedFoo is not defined
Foo.name;
// "NamedFoo"