我需要使用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
答案 0 :(得分:4)
你没有xPos
和yPos
的吸引力,所以你为什么不明确。
这个this.xPos = 0;
调用xPos
的setter,但是当你想写这个值时,它会为它找到一个变量或一个getter,但你没有任何一个他们。在你的情况下,你需要使用价值,或为它写一个吸气剂。
在示例中,我正在使用getters
和setters
。在setter
中,我设置了属性的值,并读取了throw getter
。 getter
会返回属性的值。
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();