因此,我已经阅读了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"

最佳答案

这是ES6正确吗?


是。

尽管可能不建议不要在构造函数中创建所有属性,但这是一种不好的做法。


  如果您具有此类ES7类,并且尝试像这样访问myProperty myClass.myProperty,您是否会获得预期的"Hey"


是的,但是请注意,myProperty不是类,而是实例属性。

var myClass = new MyClass;
myClass.myProperty; // "Hey"


而且,带有初始化程序的实例字段声明无论如何都是完全多余的,因为它立即被几乎等效的this.myProperty = "Hey";覆盖。

关于javascript - ES6类属性定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35468538/

10-12 05:27