var phonenum = document.querySelectorAll(".phonenum");//手机号码
[].forEach.call(phonenum, function(item, index) {
item.addEventListener('blur', function(event) {
phoneCheck(phonenum,this);
},false);
});
看不太懂于是上网查了一下(以下是转载,原文链接:https://stackoverflow.com/questions/16053357/what-does-foreach-call-do-in-javascript):
[]是一个数组,这个数组根本不用,它被放在页面上,因为使用数组可以访问数组原型,例如.forEach。
这比打字更快 Array.prototype.forEach.call(...);
接下来,forEach是将函数作为输入的函数...
[1,2,3].forEach(function (num) { console.log(num); });
...并且对于每个元素this(其中this是数组式的,因为它有一个length,你可以访问它的部分this[1]),它将通过三件事情:
1、数组中的元素
2、元素的索引(第三个元素将通过2)
3、对数组的引用
最后,.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从空数组更改为所有标记的列表,并且对于每个按顺序,您都调用所提供的函数。