1

当我尝试在 FF 中加载我的页面时,我收到此错误:

TypeError: property Array.prototype.splice.call(...) is non-configurable and can't be deleted

这是原型

   HTMLElement.prototype.selectorAll = function (selectors, fun) {

        var sels = Array.prototype.splice.call(this.querySelectorAll(selectors), 0)
        if (!fun) { return sels; }; fun.call(sels);
    };

如何修复此错误?

4

1 回答 1

2

使用slice而不是splice仅仅Array从原始集合创建一个新集合。

var sels = Array.prototype.slice.call(this.querySelectorAll(selectors), 0)

该错误是因为splice还试图修改原始集合:

var a = [ 1, 2, 3, 4 ];

a.slice(0);
console.log(a); // [ 1, 2, 3, 4 ]

a.splice(0);
console.log(a); // []

并且NodeList返回的 fromquerySelectorAll()具有splice无法按预期更改的不可配置属性。

于 2013-11-02T21:25:39.063 回答