2

所以我已经阅读了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,你会undefinedmyClass.viewModel.

这个对吗?

如果你有这个 ES7 类并且你尝试myProperty像这样访问,myClass.myProperty你会得到预期的结果"Hey"吗?

4

1 回答 1

2

这是 ES6 正确的吗?

是的。

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

如果你有这个 ES7 类并且你尝试myProperty像这样访问,myClass.myProperty你会得到预期的结果"Hey"吗?

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

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

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

于 2016-02-17T22:20:31.747 回答