Связывание Javascript с использованием вызова с setInterval

Как я могу использовать "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();

Кажется, я не совсем понимаю, как работает вызов. Кто-нибудь может объяснить, что я делаю не так?

5
задан afuzzyllama 3 May 2018 в 14:59
поделиться