所以我已经阅读了stackoverflow。在ES6中,这是无效的:
class MyClass {
myProperty = "";
constructor() {
this.myProperty = "Hey";
}
}
但它在ES7中有效。
但是,这是否有效:
class MyClass {
setViewModel(viewModel) {
this.internalViewModel = viewModel;
}
get viewModel() { return this.internalViewModel }
}
在我实际设定之前,我还没有定义internalViewModel
。我希望如果您在致电myClass.setViewModel(something)
之前未呼叫myClass.viewModel
,则会从undefined
返回myClass.viewModel
。
这是对的吗?
如果你有这个ES7课程并且你试图像myProperty
那样访问myClass.myProperty
,你会得到预期的"Hey"
吗?
答案 0 :(得分:2)
这个ES6是否正确?
是
虽然在构造函数中创建所有属性可能被认为是不好的做法。
如果你有这个ES7课程并且你试图像
yii message/extract
那样访问myProperty
,你会得到预期的myClass.myProperty
吗?
是的,但请注意"Hey"
不是类,而是实例属性。
myProperty
此外,无论如何,带有初始化器的实例字段声明完全是多余的,因为它会通过近似等效的var myClass = new MyClass;
myClass.myProperty; // "Hey"
被覆盖。