[].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>按順序,您都調用所提供的函數。

相關文章
相關標籤/搜索