这里发生的是,您调用
slice()它就像是
NodeList使用的功能
call()。
slice()在这种情况下,要做的是创建一个空数组,然后遍历其运行的对象(最初是一个数组,现在是一个数组
NodeList),并将该对象的元素附加到其创建的空数组中,最终将其返回。
编辑:
因此,它以空数组[]开头,然后使用slice将调用结果转换为新数组,是吗?
那是不对的。
[].slice返回一个函数对象。函数对象具有一个函数
call(),该函数调用将该函数分配给
call()to
的第一个参数
this;换句话说,让函数认为它是从参数(由
NodeList返回的
document.querySelectorAll('a'))而不是从数组中调用的。

![用JavaScript解释[] .slice.call? 用JavaScript解释[] .slice.call?](http://www.mshxw.com/aiimages/31/430309.png)
