ES6类属性定义

时间:2016-02-17 21:52:46

标签: javascript ecmascript-6 ecmascript-next

所以我已经阅读了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"吗?

1 个答案:

答案 0 :(得分:2)

  

这个ES6是否正确?

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

  

如果你有这个ES7课程并且你试图像yii message/extract那样访问myProperty,你会得到预期的myClass.myProperty吗?

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

myProperty

此外,无论如何,带有初始化器的实例字段声明完全是多余的,因为它会通过近似等效的var myClass = new MyClass; myClass.myProperty; // "Hey" 被覆盖。