我有这个对象:
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());
}
}
};
由于一些奇怪的原因,当我从 _add
属性中删除 apply()
函数时,IE9 可以正常工作,如果我将其留在那里,IE9 将停止工作,但属性 _add
需要 apply()
才能按预期工作。
我研究了 IE9 中的 apply()
问题,但找不到任何相关内容。
有什么帮助吗?
非常感谢
最佳答案
IE9不支持通过setInterval
参数向回调传递参数。
所以这不是apply
的问题,而是setInterval
的问题。
您可以使用这个:
var args = [].slice.call(arguments, 2), newInterval = setInterval(function(){
fun.apply(window, args);
}, interval);
关于Javascript - Apply() 破坏 IE 9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30375908/