Javascript - Apply()打破IE 9

时间:2015-05-21 13:56:51

标签: javascript jquery internet-explorer internet-explorer-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());
        }
    }
};

由于一些奇怪的原因,当我从apply()属性中移除_add函数IE9有效时,如果我将它留在那里IE9停止工作,但属性_add需要{{1}按照假设工作。

我在IE9中研究了apply()的问题,但找不到任何相关内容。

任何帮助?

非常感谢

1 个答案:

答案 0 :(得分:4)

IE9不支持通过setInterval的参数将参数传递给回调。

所以这不是apply而是setInterval的问题。

您可以改用:

var args = [].slice.call(arguments, 2), newInterval = setInterval(function(){
    fun.apply(window, args);
}, interval);