[].forEach.call()的含义和用法

前些天领导给写了一个不太熟悉的函数:javascript

var phonenum = document.querySelectorAll(".phonenum");//手机号码java

[].forEach.call(phonenum, function(item, index) {数组

  item.addEventListener('blur', function(event) {函数

    phoneCheck(phonenum,this); this

  },false); spa

});prototype

看不太懂因而上网查了一下(如下是转载,原文连接:https://stackoverflow.com/questions/16053357/what-does-foreach-call-do-in-javascript):索引

[]是一个数组,这个数组根本不用,它被放在页面上,由于使用数组能够访问数组原型,例如.forEach。ip

这比打字更快 Array.prototype.forEach.call(...);原型

接下来,forEach是将函数做为输入的函数...

[1,2,3].forEach(function (num) { console.log(num); });

...而且对于每一个元素this(其中this是数组式的,由于它有一个length,你能够访问它的部分this[1]),它将经过三件事情:

一、数组中的元素

二、元素的索引(第三个元素将经过2)

三、对数组的引用

最后,.call是一个函数的原型(它是一个在其余函数上调用的函数)。

.call将采用其第一个参数,并将this其中的任何内容替换为常规函数call,做为第一个参数(undefined或null将window在平常JS中使用,不然将在“strict-mode”中使用)。

其他的参数将被传递给原来的函数。

[1, 2, 3].forEach.call(["a", "b", "c"], function (item, i, arr) {

  console.log(i + ": " + item);

});

// 0: "a"

// 1: "b"

// 2: "c"

所以,您正在建立一个调用该forEach函数的快速方式,而且您正在this从空数组更改成全部<a>标记的列表,而且对于每一个<a>按顺序,您都调用所提供的函数。

相关文章
相关标签/搜索