「setInterval」で「call」を使用して、オブジェクト リテラルを取得し、独自のメソッドの 1 つを呼び出すにはどうすればよいですか?
これが例です。これは機能し、なぜ機能するのか理解しています。timer オブジェクトは、1 秒ごとに独自の tick メソッドを呼び出します。
var timer =
{
start: function()
{
var self = this;
setInterval(function(){self.tick();}, 1000);
},
tick: function()
{
console.log("tick!");
}
};
timer.start();
「call」を使用して、このコードを単純化しようとしました。この次の例は、私が思いついた最高のものです。しかし、それは機能しません。tick メソッドは 1 回だけ呼び出され、型エラーが発生します。
var timer =
{
start: function()
{
setTimeout.call(this, this.tick(), 1000);
},
tick: function()
{
console.log("tick!");
}
};
timer.start();
通話の仕組みがよくわからないと思います。誰かが私が間違っていることを説明できますか?