【问题标题】:ES6 Class Property DefinitionES6 类属性定义
【发布时间】:2016-02-17 21:52:45
【问题描述】:

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

【问题讨论】:

  • 其实在 ES7 中也无效,但在 ES8 中可能会生效。
  • 类属性不是 ES7 的一部分。
  • The proposal 实际上是一个stage 0 proposal

标签: javascript ecmascript-6 ecmascript-next


【解决方案1】:

这个 ES6 正确吗?

是的。

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2016-11-13
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 2015-06-19
    • 2015-12-09
    • 2019-07-20
    • 2018-10-03
    相关资源
    最近更新 更多