2

这是我的代码:

var timer = 
{
    i: "Hello",

    start: function()
    {       
        var self = this;             
        window.setInterval(self.tick, 1000);     
    },

    tick: function()
    {
        console.log(this.i);
    }       
}

timer.start();

为什么显示 javascript 控制台undefined

4

3 回答 3

3

您传递了对 的引用tick,但不是范围。尝试:

start: function(){       
    var self = this;             
    window.setInterval(function(){self.tick();}, 1000);     
}

或者使用bind(先看浏览器兼容性)

于 2013-04-07T08:00:40.567 回答
2

将 this.i 更改为 timer.i

或者使用像这样的对象声明

function timer() {
var self = this;
.. etc.
于 2013-04-07T08:00:51.790 回答
1

建议更改window.setInterval(self.tick, 1000);

window.setInterval(self.tick.bind(self), 1000);
于 2013-04-07T08:02:04.480 回答