这是我的代码:
var timer =
{
i: "Hello",
start: function()
{
var self = this;
window.setInterval(self.tick, 1000);
},
tick: function()
{
console.log(this.i);
}
}
timer.start();
为什么javascript控制台会显示undefined
?
答案 0 :(得分:3)
您传递了对tick
的引用,但没有传递范围。尝试:
start: function(){
var self = this;
window.setInterval(function(){self.tick();}, 1000);
}
或使用bind
(首先查看浏览器兼容性)
答案 1 :(得分:2)
将this.i更改为timer.i
或使用像
这样的对象声明function timer() {
var self = this;
.. etc.
答案 2 :(得分:1)
建议将window.setInterval(self.tick, 1000);
更改为
window.setInterval(self.tick.bind(self), 1000);