Как я могу использовать "call" с "setInterval", чтобы литерал объекта вызывал один из его собственных методов?
Вот пример. Это работает, и я понимаю, почему это работает. Объект таймера вызывает свой собственный метод тика каждую секунду
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();
Кажется, я не совсем понимаю, как работает вызов. Кто-нибудь может объяснить, что я делаю не так?