了解Pure JS中的事件附件代码

时间:2015-05-24 18:47:19

标签: javascript jquery

嘿伙计们我是JS的新手,基本上知道关于Jquery的事情,所以我正在通过this(Jquery in plain Javascript)文章,他们有以下例子:

 $('a').on('click', fn);

在此示例中,我们将click事件侦听器附加到页面上的所有锚标记。

上面的Jquery代码重写如下:

[].forEach.call( document.querySelectorAll('a'), function(el) {
   el.addEventListener('click', function() {
     // anchor was clicked
  }, false);
});

现在我理解了call()在JS中是如何工作的以及forEach在JS中是如何工作的,但是我不明白[]forEach面前做了什么,这很难要了解上述代码中的执行顺序,还要在el内传递function(el)

有人可以解释一下吗?

谢谢。

亚历-Z

1 个答案:

答案 0 :(得分:4)

[]Array.prototype的快捷方式,所以它确实是

Array.prototype.forEach.call( document.querySelectorAll('a'), callback );

它接受本机Array.prototype.forEach并使用querySelectorAll生成的nodeList作为第一个参数,this值和回调作为第二个参数调用它。

调用它可以让我们传入非数组,比如“类似数组”的对象,因为它们有一个length属性,例如arguments或nodeList,否则就不能通过直接在对象上使用Array.forEach进行迭代。