Javascript 属性为 NaN

标签 javascript

我有以下 javascript 代码:

var Environment = function() {
    this.road_frame_id = 1;   
}

Environment.prototype.nextRoadFrame = function() {
    if((this.road_frame_id -= 1) < 1) { 
        this.road_frame_id = 3;
    }
    document.getElementById("road").setAttribute("src", "images/road_background_" + this.road_frame_id + ".png");
}

var environment = new Environment();
setInterval(environment.nextRoadFrame, 150);

但似乎在函数 nextRoadFrame 中,属性 this.road_frame_id 的值为 NaN,而它应该是 3。为什么会这样?

谢谢

最佳答案

您正在传递存储在 environment.nextRoadFrame 中的函数,但没有任何上下文,因此 this 的值将是 window打电话。

创建一个使用正确上下文调用您的函数的新函数,并将其传递给 setInterval

setInterval(environment.nextRoadFrame.bind(environment), 150);

参见 documentation for bind兼容性和替代品。

关于Javascript 属性为 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22958193/

相关文章:

javascript - Nodenv 中的 x.x.x-rc Node.js 版本是什么?

javascript - 我如何在 Angular js中添加DELETE的默认 header

javascript - 三种js针对设备的渐进增强

当我移动鼠标太快时,Javascript 函数无法正常工作。关于如何改进的想法?

JavaScript 正则表达式\G + 等效偏移量

javascript - window.onresize 在 iPad 上连续调用

ASP.NET 和 Ajax : query string parameters using ISO-8859-1 encoding

服务器端 JavaScript 问题

javascript - 如何迭代特定对象属性

Javascript Array.some() 和 Array.every() 相当于 Set?