尝试将10添加到this.y变量,但返回NaN

时间:2016-10-31 16:01:59

标签: javascript jquery html

我似乎做错了什么,找不到任何解决方案。我试图将它们转换为数字并尝试+ =但我得到了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);
            }
        });
    };

}

可能因为它们不是变量?

谢谢:)

1 个答案:

答案 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));