是否可以在 window.setInterval 方法超时时在现有对象上运行该方法。我可以通过使用一些全局变量并在 setInterval 中调用此全局变量的方法来模拟相同的方法,但我想知道是否可以直接使用该方法。
最好的问候, 凯沙夫
是否可以在 window.setInterval 方法超时时在现有对象上运行该方法。我可以通过使用一些全局变量并在 setInterval 中调用此全局变量的方法来模拟相同的方法,但我想知道是否可以直接使用该方法。
最好的问候, 凯沙夫
是的,你可以这样做。您需要一个辅助函数来创建一个具有现有对象“绑定”的新函数:
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 的原生部分——它已经出现在某些浏览器中。