Javascript - Apply() 破坏 IE 9
Javascript - Apply() breaking IE 9
我有这个对象:
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
属性 IE9 中删除 apply()
功能时,如果我将其留在那里,IE9 将停止工作,但是 属性 _add
需要 apply()
正常工作。
我在 IE9 中研究了 apply()
的问题,但找不到任何相关内容。
有什么帮助吗?
非常感谢
IE9 不支持通过 setInterval
.
的参数向回调传递参数
所以这不是 apply
的问题,而是 setInterval
的问题。
您可以改用这个:
var args = [].slice.call(arguments, 2), newInterval = setInterval(function(){
fun.apply(window, args);
}, interval);
我有这个对象:
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
属性 IE9 中删除 apply()
功能时,如果我将其留在那里,IE9 将停止工作,但是 属性 _add
需要 apply()
正常工作。
我在 IE9 中研究了 apply()
的问题,但找不到任何相关内容。
有什么帮助吗?
非常感谢
IE9 不支持通过 setInterval
.
所以这不是 apply
的问题,而是 setInterval
的问题。
您可以改用这个:
var args = [].slice.call(arguments, 2), newInterval = setInterval(function(){
fun.apply(window, args);
}, interval);