Как я могу использовать «вызов» с «setInterval», чтобы литерал объекта вызывал один из его собственных методов?
Вот пример. Это работает, и я понимаю, почему это работает. Объект таймера вызывает собственный метод тика каждую секунду.
var timer =
{
start: function()
{
var self = this;
setInterval(function(){self.tick();}, 1000);
},
tick: function()
{
console.log("tick!");
}
};
timer.start();
Я попытался упростить этот код, используя «вызов». Следующий пример — лучшее, что я придумал. Но это не работает: метод тика вызывается только один раз, и тогда я получаю ошибку типа.
var timer =
{
start: function()
{
setTimeout.call(this, this.tick(), 1000);
},
tick: function()
{
console.log("tick!");
}
};
timer.start();
Кажется, я не совсем понимаю, как работает вызов. Кто-нибудь может объяснить, что я делаю неправильно?