[]
est un tableau.
Ce tableau n'est pas utilisé du tout.
Il est mis sur la page, parce que l'utilisation d'un tableau vous donne accès à un tableau de prototypes, comme .forEach
.
C'est juste plus rapide que de taper Array.prototype.forEach.call(...);
Ensuite, forEach
est une fonction qui prend une fonction comme une entrée...
[1,2,3].forEach(function (num) { console.log(num); });
...et pour chaque élément, en this
(où this
est semblable au tableau, qu'il a un length
vous avez ainsi accès à ses parties, comme this[1]
) il va passer trois choses:
- l'élément dans le tableau
- l'indice de l'élément (troisième élément serait de passer
2
)
- une référence à la matrice
Enfin, .call
est un prototype des fonctions (c'est une fonction qui est appelée à d'autres fonctions).
.call
va prendre son premier argument et remplacez - this
à l'intérieur de la fonction régulière avec tout ce que vous avez passés call
, comme le premier argument (undefined
ou null
utilisera window
dans le quotidien de la JS, ou seront celles que vous avez passé, si dans le "strict-mode"). Le reste des arguments sera passé à la fonction d'origine.
[1, 2, 3].forEach.call(["a", "b", "c"], function (item, i, arr) {
console.log(i + ": " + item);
});
// 0: "a"
// 1: "b"
// 2: "c"
Par conséquent, vous êtes en train de créer un moyen rapide pour appeler l' forEach
de la fonction, et vous êtes évolution this
à partir du tableau vide à une liste de tous les <a>
tags, et pour chaque <a>
dans l'ordre, vous êtes à l'appel de la fonction.