Javascript 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; }

所以我读了很多关于stackoverflow的文章。在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
您会得到预期的
“嘿”

这是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的一部分。实际上是一个。