簡體   English   中英

使用 setInterval 調用的 Javascript 綁定

[英]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 是如何工作的。 誰能解釋我做錯了什么?

您正在.calling .setInterval不是瀏覽器調用的回調函數:

setInterval( this.tick.bind(this), 1000 );

應該管用。 請參見.bind

這就是我最終得到的:

  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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM