Javascript ES6类属性定义
所以我读了很多关于stackoverflow的文章。在ES6中,这是无效的:Javascript ES6类属性定义,javascript,ecmascript-6,ecmascript-next,Javascript,Ecmascript 6,Ecmascript Next,所以我读了很多关于stackoverflow的文章。在ES6中,这是无效的: class MyClass { myProperty = ""; constructor() { this.myProperty = "Hey"; } } 但它在ES7中有效 但是,这是否有效: class MyClass { setViewModel(viewModel) { this.internalViewModel = viewModel; }
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
您会得到预期的“嘿”
这是ES6吗
对
尽管不在构造函数中创建所有属性可能被认为是一种不好的做法
如果您有这个ES7类,并且您尝试访问myProperty
像这样myClass.myProperty
您会得到预期的“嘿”
是的,但是请注意,myProperty
不是一个类,而是一个实例属性
var myClass = new MyClass;
myClass.myProperty; // "Hey"
另外,初始化器的实例字段声明是完全多余的,因为它会通过近似等效的this.myProperty=“Hey”立即被覆盖代码>
这是ES6吗
对
尽管不在构造函数中创建所有属性可能被认为是一种不好的做法
如果您有这个ES7类,并且您尝试访问myProperty
像这样myClass.myProperty
您会得到预期的“嘿”
是的,但是请注意,myProperty
不是一个类,而是一个实例属性
var myClass = new MyClass;
myClass.myProperty; // "Hey"
另外,初始化器的实例字段声明是完全多余的,因为它会通过近似等效的this.myProperty=“Hey”立即被覆盖代码>实际上,它在ES7中也无效,但可能在ES8中变为有效。类属性不是ES7的一部分。实际上是。实际上它在ES7中也无效,但可能在ES8中变为有效。类属性不是ES7的一部分。实际上是一个。