【发布时间】:2016-11-05 06:53:52
【问题描述】:
我已经研究过了,似乎 ES6 没有设置类的属性并返回该类的能力?
class MyClass {
constructor() {
this.x = 0;
this.y = 0;
}
update(value) {
// logic
this.y = value;
return value;
}
}
var x = new MyClass();
console.log(x.update(1));
使用上述方法,x 将保持 y 为 0,即使将 y 设置为 1。 console.log 将推出 1,但 y 从未真正更新。调用x.y 将导致0。
我也尝试过返回课程,但这也不起作用。
class MyClass {
constructor() {
this.x = 0;
this.y = 0;
}
update(value) {
// logic
this.y = value;
return this;
}
}
var x = new MyClass();
x = x.update(1);
之后使用console.log(x) 将再次导致y 成为0,而不是1。
我知道set 和get,但我无法在update() 中执行任何逻辑或返回任何内容。
这是故意的,还是我完全做错了?
我想说明我正在使用 NodeJS。
我正在做一些事情,例如:
class.js ->
module.exports = /*class MyClass{}*/ (the above MyClass code)
app.js ->
let MyClass = require('class');
let x = new MyClass();
x.update(1);
console.log(x) (this returns the same value as x before calling update())
【问题讨论】:
-
您的代码不应该工作,因为您缺少
class关键字并且您不能将类调用为函数 -
我无法重现您的问题:puu.sh/pOHGf/3f57163da1.png
-
@Kondax 你确定你检查的是
x.y而不是x.x吗? -
是的,我正在检查 x.y。我将在操作中添加更多信息。
-
“这在调用 update() 之前返回与 x 相同的值”
x引用相同的值。console.log(x.y)的输出是什么?
标签: javascript node.js class ecmascript-6