ES6类 - 错误的构造函数和setter行为

时间:2017-03-16 12:23:53

标签: javascript ecmascript-6

我需要使用setters insight ES6 classes在实例的某些属性发生更改时自动调用某个方法。

我写了这个:

class Some {
  constructor () {
    this.xPos = 0;
    this.yPos = 0;
  }

  set xPos (value) {
    console.log(`xPos ${this.xPos}`);
  }

  set yPos (value) {
    console.log(`yPos ${this.yPos}`);
  }
}

let some = new Some();

但控制台输出:

xPos undefined
yPos undefined

1 个答案:

答案 0 :(得分:4)

你没有xPosyPos的吸引力,所以你为什么不明确。

这个this.xPos = 0;调用xPos的setter,但是当你想写这个值时,它会为它找到一个变量或一个getter,但你没有任何一个他们。在你的情况下,你需要使用价值,或为它写一个吸气剂。

在示例中,我正在使用getterssetters。在setter中,我设置了属性的值,并读取了throw gettergetter会返回属性的值。



class Some {

  constructor () {
    this.xPos = 0;
    this.yPos = 0;
  }

  set xPos (value) {
    this.xPosProp = value;
    console.log(`xPos ${this.xPos}`);
  }

  set yPos (value) {
    this.yPosProp = value;
    console.log(`yPos ${this.yPos}`);
  }
  
  get xPos () {
    return this.xPosProp;
  }

  get yPos () {
    return this.yPosProp;
  }
}

let some = new Some();