在Chrome的控制台中,
> $$
bound: function ()
{
return document.querySelectorAll.apply(document, arguments)
}
为什么这段代码是这样的? 与
有什么不同 return document.querySelectorAll(arguments)
答案 0 :(得分:2)
arguments
是一个类似数组的对象。
调用document.querySelectorAll(arguments)
会将整个数组作为单个参数传递
调用querySelectorAll.apply(document, arguments)
会将数组中的每个项目作为单独的参数传递。
在这种特殊情况下,它不是很有用,因为querySelectorAll
只能接受一个参数。
答案 1 :(得分:2)
使用.apply()
可确保提供给bound()
的参数在提供给querySelectorAll()
之前解包。
没有这个,调用的效果:
bound('foo');
将致电
document.querySelectorAll(['foo']);