1

我不明白这是如何工作的:

var links = [].slice.apply(document.getElementsByTagName('a'));

它创建了一个空数组,但我没有完全得到其余的。在这个脚本中一起做什么slice和真正做什么?apply

4

2 回答 2

2

document.getElementsByTagName()和类似的 DOM 方法返回一个类似数组的结构,一个节点列表,而不是一个真正的数组。这是将其转换为真正数组的常用技巧。它也常与arguments特殊变量(另一种类似数组的结构)一起使用。Array 对象的slice方法通常需要一个数组,并返回一个数组,但是这样你可以传入一些技术上不是数组的东西。一个更易读,可以说更好的版本是这样的:

Array.prototype.slice.apply(document.getElementsByTagName('a'));
于 2012-10-26T23:06:18.417 回答
0

这基本上将从 getElementsByTagName 检索到的 nodeList 对象转换为常规 javascript 数组,以便能够在其上使用数组方法。

于 2012-10-26T23:05:52.920 回答