我很困惑,在不同的项目中我有时会写
class Foo {
static BAR = {
foobar: 'baz'
}
}
有时这不能编译,而是我必须写
class Foo {
static get BAR() {
return {
foobar: 'baz'
}
}
}
我真的不喜欢第二种语法,第一种语法更简洁。问题是第一个语法在一个项目中工作,而在另一个项目中它会引发语法错误,我不知道为什么。
似乎使用不同的Babel预设有效果。不同的ECMAScript版本对此有不同的定义吗?
答案 0 :(得分:1)
不同之处在于,一个是静态class property,而另一个是static method,具体是一个吸气剂。类属性是Babel的stage-2
preset 1 的一部分。根据链接:
第2阶段:草稿
它是什么?规范中的第一个版本。此时,最终可能会在标准中包含该功能。
因此,类属性还不是ECMAScript的一部分,但可能会在以后的版本ECMAScript 2016中出现在规范中。另一方面,静态方法已经是ECMAScript 2015规范的一部分,所以支持ECMAScript 2015的浏览器已经允许你这样做了。
1 预设的某些阶段被描述为here,并描述某个特征所处的发展阶段。