ECMAscript 6:观察类属性的变化

rev*_*evy 5 javascript class watch ecmascript-6

假设我有一个定义如下的类:

class MyClass {

    constructor (a) {
        this.a = a;     
    }

    _onPropertyChanged() {
        // do something
    }
}
Run Code Online (Sandbox Code Playgroud)

每当 MyClass 实例的属性“a”发生更改时,我都想在该实例上触发 _onPropertyChanged 方法。使用 ECMAscript 6 实现这一目标的最佳(性能最高)方法是什么?

Est*_*ask 5

没有“最佳”方法,实际方法始终取决于最终目标。

以其简单(且性能足够)的形式,它是:

class MyClass {

    constructor (a) {
      this.a = a;     
    }

    get a() {
      return this._a;
    }

    set a(val) {
      this._a = val;
      this._onPropertyChanged('a', val);
    }

    _onPropertyChanged(propName, val) {
        // do something
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @cartant 这不是打字错误。构造函数更改 `a` 属性,并调用 onPropertyChanged 钩子。 (3认同)