使用setInterval调用的Javascript绑定

d13*_*d13 5 javascript binding call object-literal setinterval

如何使用"call"与"setInterval"来获取对象文字以调用其自己的方法之一?

这是一个例子.这有效,我理解为什么它有效.timer对象每秒调用一次自己的tick方法

var timer =
{ 
  start: function()
  {
    var self = this;
    setInterval(function(){self.tick();}, 1000);

  },

  tick: function()
  {
    console.log("tick!");
  }
};

timer.start();
Run Code Online (Sandbox Code Playgroud)

我尝试使用"call"来简化此代码.下一个例子是我想出的最好的例子.但它不起作用:tick方法只调用一次,然后我得到一个类型错误.

var timer =
{ 
  start: function()
  {
    setTimeout.call(this, this.tick(), 1000);
  },

  tick: function()
  {
    console.log("tick!");
  }
};

timer.start();
Run Code Online (Sandbox Code Playgroud)

我想我真的不明白呼叫是如何运作的.谁能解释我做错了什么?

Esa*_*ija 13

.calling .setInterval不是浏览器调用的回调函数:

setInterval( this.tick.bind(this), 1000 );
Run Code Online (Sandbox Code Playgroud)

应该管用.看到.bind