我不明白这是如何运作的:
var links = [].slice.apply(document.getElementsByTagName('a'));
它创建一个空数组,但我没有完全得到其余部分。 slice
和apply
在此脚本中一起做了什么?
答案 0 :(得分:2)
document.getElementsByTagName()
和类似的DOM方法返回一个类似于数组的结构,一个节点列表,而不是一个真正的数组。这是将其转换为真实数组的常见技巧。它也常用于arguments
特殊变量,另一种类似阵列的结构。 Array对象的slice
方法通常需要一个数组,并返回一个数组,但这样你就可以传入一些技术上不是数组的东西。这是一个稍微更易读,可以说是更好的版本:
Array.prototype.slice.apply(document.getElementsByTagName('a'));
答案 1 :(得分:0)
这基本上将从getElementsByTagName检索到的nodeList对象转换为常规javascript数组,以便能够在其上使用数组方法。