ES6 类属性定义

ES6 Class Property Definition

本文关键字:定义 属性 ES6      更新时间:2023-09-26

所以我读过堆栈溢出。在 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"吗?

这个 ES6 正确吗?

是的。

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

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

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

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

此外,无论如何,带有初始化器的实例字段声明是完全多余的,因为它会立即通过几乎等效的this.myProperty = "Hey";被覆盖。