Javascript - Apply() 破坏 IE 9

标签 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());
        }
    }
};

由于一些奇怪的原因,当我从 _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/

相关文章:

php - ajax收到的链接无法点击

html - IE8 为非显示元素保留空间

jQuery 在 IE-8 和 FF-3.5.8 中设置只读属性不一致

javascript - 无法使用 Travis CI 安装 Phoenix 框架 npm 依赖项(phoenix 和 phoenix_html)

javascript 变量没有被传递

javascript - DataTables 从 JSON 或 JS Array&Objects 填充表格

html - 即使 IE=edge,兼容模式按钮仍然存在

javascript - 这两个 XPath 表达式有什么区别?

javascript - OrientDB HTTP REST Api 查询未经授权

javascript - 使用 AJAX 附加 PHP 代码