function Something() {
this.var1 = 0;
this.var2 = 2;
this.mytimer;
this.getCars=function() {
//some code
};
this.start = function(l) {
this.updateTimer=setInterval("this.getCars();" , 5000);
};
}
var smth = new Something();
smth.start();
当我输入this.getCars()时,它不起作用。如果函数是全局声明的,我放入例如getCars就可以了。 我不知道如何解决这个问题,因为setInterval变为String的参数。
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
var me = this
setInterval(function() {me.getCars()}, 5000)
如果您正好使用prototype,您还可以使用方便的bind方法:
setInterval(this.getCars.bind(this), 5000)
答案 1 :(得分:0)
试试这个:
function Something() {
this.var1 = 0;
this.var2 = 2;
this.mytimer;
var me = this;
this.getCars = function() {
console.log(me.var2);
};
this.start = function(l) {
me.updateTimer = setInterval(me.getCars, 1000);
}
}
var smth = new Something();
smth.start();
console.log()
位是Firefox / Firebug。如果您不使用它,请将其替换为其他内容(尽管我强烈建议您使用它进行开发)。
基本上问题是当你调用一个函数,甚至一个对象的方法时,你调用它的方式决定了this
的值。有关详细信息,请参阅Method binding。所以你所做的是修复this
的值,正如我在上面的例子中所做的那样(对于方法)。