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從空數組更改為所有<a>標記的列表,並且對於每個<a>按順序,您都調用所提供的函數。