ES6 中的类声明和类表达式

TOM*_*TOM 2 ecmascript-6

我不清楚 Class 表达式和 Class 声明。请帮助我理解它们之间的不同。

谢谢

m-a*_*n-o 7

这相对简单。

在“类表达式”中,类对象NamedFoo被分配给一个名为 的变量Foo,如下所示:

var Foo = class NamedFoo {
  constructor() {}
  whoIsThere() {
    return NamedFoo.name;
  }
}
Run Code Online (Sandbox Code Playgroud)

在“类声明”中,类对象NamedFoo是由自己单独声明的,如下所示:

class NamedFoo {
  constructor() {}
  whoIsThere() {
    return NamedFoo.name;
  }
}
Run Code Online (Sandbox Code Playgroud)

这里的区别还在于,当它是“类声明”时,您可以通过使用来引用类NamedFoo,但是,当它是“类表达式”时,您将只能通过分配给它的变量来引用类,在这种情况下Foo

我希望这有帮助!

  • 可能值得澄清的是,变量赋值与类表达式本身无关。这只是可能出现类表达式的一个用例。顾名思义,在任何使用表达式的地方都可以使用类*表达式*。例如`foo(class {})`。 (4认同)