类表达式
**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语言规范 # sec-class-definitions |
浏览器兼容性
BCD表格仅在浏览器中加载