是否可以在window.setInterval方法的超时时在现有对象上运行该方法。我可以通过使用一些全局变量并在setInterval中调用此全局变量的方法来模拟相同的内容,但我想知道是否可以直接使用该方法。
最诚挚的问候, 凯沙夫
答案 0 :(得分:2)
是的,你可以这样做。您需要一个辅助函数来创建一个 new 函数,该函数将您的现有对象“绑定”:
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”指针将引用该对象。
简化了“bind”的版本。 Prototype,Functional,jQuery等库通常提供更强大的版本。此外,“绑定”功能有一天将成为Javascript的原生部分 - 它已经存在于某些浏览器中。