ES6 Class 属性 定义

ES6 Class Property Definition

所以我已经阅读了 Whosebug。在 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 class 并且你尝试像这样访问 myProperty myClass.myProperty 你会得到预期的 "Hey" 吗?

Is this ES6 correct?

是的。

虽然不在构造函数中创建所有属性可能被认为是一种不好的做法。

If you have this ES7 class and you tried to access myProperty like so myClass.myProperty would you get the expected "Hey" or not?

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

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

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

覆盖