静态 foo = "bar" 与 MyClass.foo = "bar"

static foo = "bar" vs. MyClass.foo = "bar"

在 ECMAScript 6 中,以下语法有什么区别:

class MyClass {
  static foo = "bar"
}


class MyClass {}

MyClass.foo = "bar"

语法错误,但在第一个示例中 foo 无法修改,在第二个示例中可以

第一个示例不是 ES6 的一部分,它是 currently only a proposal,因此可能存在于 Javascript 的未来版本中。

但是,它在功能上与第二个示例相同 - 您可以在 Babel REPL 中尝试查看它们被编译成什么。如果你正在转译你的代码,你可以使用第一种语法,但你需要包含适当的标志(对于 Babel,此代码需要 'stage-1' 标志才能编译)。