我有这个对象:
var _intervals = {
intervals: {},
_add: function (fun, interval) {
var newInterval = setInterval.apply(
window,
[fun, interval].concat([].slice.call(arguments, 2))
);
this.intervals[ newInterval ] = true;
return newInterval;
},
_delete: function (id) {
return clearInterval(this.intervals[id]);
},
_deleteAll: function () {
var all = Object.keys(this.intervals), len = all.length;
while (len-- > 0) {
clearInterval(all.shift());
}
}
};
由于一些奇怪的原因,当我从apply()
属性中移除_add
函数IE9有效时,如果我将它留在那里IE9停止工作,但属性_add
需要{{1}按照假设工作。
我在IE9中研究了apply()
的问题,但找不到任何相关内容。
任何帮助?
非常感谢
答案 0 :(得分:4)
IE9不支持通过setInterval
的参数将参数传递给回调。
所以这不是apply
而是setInterval
的问题。
您可以改用:
var args = [].slice.call(arguments, 2), newInterval = setInterval(function(){
fun.apply(window, args);
}, interval);