javascript作用域问题,带有;这";

javascript作用域问题,带有;这";,javascript,Javascript,这是我的密码: var timer = { i: "Hello", start: function() { var self = this; window.setInterval(self.tick, 1000); }, tick: function() { console.log(this.i); } } timer.s

这是我的密码:

var timer = 
{
    i: "Hello",

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

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

timer.start();

为什么javascript控制台显示
未定义的

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

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

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

将此.i更改为timer.i

或者使用对象声明,如

function timer() {
var self = this;
.. etc.

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

window.setInterval(self.tick.bind(self), 1000);

因为JavaScript中的
与大多数其他语言中的
工作方式不同。看见