我似乎做错了什么,找不到任何解决方案。我试图将它们转换为数字并尝试+ =但我得到了NaN。
function circle() {
this.x = 60;
this.y = 200;
this.draw = function() {
ellipse(this.x, this.y, 20, "green");
};
this.move = function() {
$(document).keydown(function(e) {
// console.log(e.keyCode);
if (e.keyCode === 68) {
this.y += 1;
console.log(this.y);
}
});
};
}
可能因为它们不是变量?
谢谢:)
答案 0 :(得分:1)
这是因为keydown回调中的this
不符合您的预期。
解决的一种方法是将外部范围的this
保存到变量。
var me = this;
me.x = 60;
me.y = 200;
....
me.y += 1; //use me istead of this.
console.log(me.y);
其他方式可能是使用es6 lambas,因为它会绑定范围。
$(document).keydown(e => {//lamba instead of function
if (e.keyCode === 68) {
this.y += 1;
console.log(this.y);
}
});
您还可以使用bind
函数绑定范围。
$(document).keydown((function(e) {//lamba instead of function
if (e.keyCode === 68) {
this.y += 1;
console.log(this.y);
}
}).bind(this));