[英]Javascript binding using call with setInterval
我如何使用“調用”和“setInterval”來獲取對象文字來調用它自己的方法之一?
這是一個例子。 這行得通,我明白它為什么行得通。 定時器對象每秒調用一次它自己的 tick 方法
var timer =
{
start: function()
{
var self = this;
setInterval(function(){self.tick();}, 1000);
},
tick: function()
{
console.log("tick!");
}
};
timer.start();
我試圖通過使用“調用”來簡化這段代碼。 下一個例子是我想到的最好的例子。 但它不起作用:只調用了一次 tick 方法,然后出現類型錯誤。
var timer =
{
start: function()
{
setTimeout.call(this, this.tick(), 1000);
},
tick: function()
{
console.log("tick!");
}
};
timer.start();
我想我真的不明白 call 是如何工作的。 誰能解釋我做錯了什么?
這就是我最終得到的:
var timer = {
time: 0,
start: function() {
var timerTick = this.tick.bind(this);
window.setInterval(function() {
timerTick();
}, 1000);
},
tick: function() {
this.time += 1;
console.log(this.time);
}
};
timer.start();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.