Javascript Firefox错误';设置仅具有getter的属性';调用Array.prototype.slice时

Javascript Firefox错误';设置仅具有getter的属性';调用Array.prototype.slice时,javascript,arrays,firefox,Javascript,Arrays,Firefox,我需要将NodeList对象转换为数组-在本例中,是元素的列表,因为我需要使用map()和filter()方法对其进行优化 不幸的是,在Firefox中(我测试了3.6和4),我使用的方法会抛出以下错误: Error: setting a property that only has a getter 下面的代码是有问题的行的压缩版本 trackList = [].splice.call(videoElement.querySelectorAll("div"),0); 这在Chrome和Sa

我需要将
NodeList
对象转换为数组-在本例中,是
元素的列表,因为我需要使用
map()
filter()
方法对其进行优化

不幸的是,在Firefox中(我测试了3.6和4),我使用的方法会抛出以下错误:

Error: setting a property that only has a getter
下面的代码是有问题的行的压缩版本

trackList = [].splice.call(videoElement.querySelectorAll("div"),0);
这在Chrome和Safari中效果很好。它似乎与
querySelectAll
方法无关,因为无论如何获取
NodeList
(例如,使用
document.getElementsByTagName(“div”)
),都会出现相同的问题

问题似乎在于
call()
方法本身-给定预先存在的
NodeList
和对
Array.prototype.slice
方法的引用,以下操作仍将失败:

sliceMethod.call(myNodeList,0);
不用说,我被难住了——任何帮助或建议都将不胜感激

更新


这被证明是一个印刷错误-本打算使用切片而不是拼接。

我认为问题不在于
调用,而在于节点列表。NodeLists是(我认为总是)活动的,这意味着如果添加了一个新div,它会自动成为NodeList的一部分,或者如果它从文档中删除,它也会从NodeList中删除,等等。因此从NodeList中删除任何内容都没有意义,这就是
splice
所做的。我想你可能是想用它来代替。

在发布我的答案后,我尝试了
Array.prototype.splice.call(document.getElementsByTagName('*'),0)输入,工作正常。我仍然认为您可能打算使用
slice
,但看起来我的答案是错的。你能在上面贴一个简单的例子来演示这个明显的错误吗!你完全正确!我整天都在盯着这段代码(我的同事也是),但我们没有发现错误。让别人看你的作品会有帮助!谢谢:)