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);