我的代码如下:
var X = {
updateAll: function() {
// ...
},
init: function() {
window.setInterval(function() {
this.updateAll();
}, 40000);
}
}
在X.init()
中,我希望能够访问updateAll()
,但由于显而易见的原因,它无法按预期运行。
我如何达到所需的结果?
答案 0 :(得分:3)
init: function() {
var _self = this;
window.setInterval(function() {
_self.updateAll();
}, 40000);
}
答案 1 :(得分:0)
你可以这样做。
var X = {
updateAll: function() {
console.log('updateALL');
},
init: function() {
var self=this;
window.setTimeout(function() {
self.updateAll();
}, 200);
}
};
答案 2 :(得分:0)
您可以绑定该功能:
^-?[0-9]\d*$
或者,如果您使用的是ECMAScript 2015,则可以使用箭头功能:
init: function() {
window.setInterval(function() {
this.updateAll();
}.bind(this), 40000);
}
答案 3 :(得分:0)
您可以使用其他答案中提到的var self = this
方法, OR 您可以使用函数具有的.bind方法:
var X = {
updateAll: function() {
// ...
},
init: function() {
window.setInterval(
this.updateAll.bind(this),
40000
);
}
}
请注意,您并不需要所有这些" function(){...}"在setInterval的第一个参数中 - 它是多余的。