0

是否可以在 window.setInterval 方法超时时在现有对象上运行该方法。我可以通过使用一些全局变量并在 setInterval 中调用此全局变量的方法来模拟相同的方法,但我想知道是否可以直接使用该方法。

最好的问候, 凯沙夫

4

1 回答 1

2

是的,你可以这样做。您需要一个辅助函数来创建一个具有现有对象“绑定”的函数:

var someRandomObject = {
  someMethod: function() {
    // ... whatever
  },
  // ...
};

// this is a "toy" version of "bind"
function bind(object, method) {
  return function() {
    method.call(object);
  };
}

var interval = setInterval(bind(someRandomObject, someRandomObject.someMethod), 1000);

现在,当间隔计时器调用您的方法(“someMethod”)时,“this”指针将引用该对象。

那个版本的“绑定”被简化了。Prototype、Functional、jQuery 等库通常提供更强大的版本。此外,“绑定”功能有一天会成为 Javascript 的原生部分——它已经出现在某些浏览器中。

于 2010-06-15T11:43:21.987 回答