ES6类属性定义
问题描述:
所以我已经阅读了各种计算器。在ES6中这是无效的:ES6类属性定义
class MyClass {
myProperty = "";
constructor() {
this.myProperty = "Hey";
}
}
但它在ES7中有效。
然而,这是有效的:
class MyClass {
setViewModel(viewModel) {
this.internalViewModel = viewModel;
}
get viewModel() { return this.internalViewModel }
}
在这里,直到我实际上设置还没有定义internalViewModel
。我希望如果您在致电myClass.viewModel
之前尚未拨打myClass.setViewModel(something)
,则会从myClass.viewModel
返回undefined
。
这是正确的吗?
如果你有这个ES7类,你试图访问myProperty
像这样myClass.myProperty
你会得到预期的"Hey"
或不?
答
这个ES6是否正确?
是的。
尽管在构造函数中不创建所有属性可能被认为是不好的做法。
如果你有这样的ES7类和您试图访问
myProperty
像这样myClass.myProperty
,你会得到预期的"Hey"
与否?
是的,但请注意,myProperty
不是一个类,而是一个实例属性。
var myClass = new MyClass;
myClass.myProperty; // "Hey"
此外,在初始化器实例字段声明完全是多余的,无论如何,因为它覆盖马上通过近等效this.myProperty = "Hey";
。
其实它在ES7中也是无效的,但在ES8中可能会有效。 – Bergi
类属性不是ES7的一部分。 –
[建议](https://github.com/jeffmo/es-class-fields-and-static-properties)实际上是[阶段0提案](https://tc39.github.io/process-document /)。 – towerofnix