TL, DR;
Array.prototype.slice.call(nodelist).filter
La méthode slice () renvoie un tableau. Ce tableau retourné est une copie superficielle de la collection (NodeList)
Donc il fonctionne plus vite que Array.from ()
Donc ça marche aussi vite que Array.from ()
Les éléments de la collection d'origine sont copiés dans le tableau renvoyé comme suit:
- Pour les références d'objet (et non l'objet réel), slice copie les références d'objet dans le nouveau tableau. Le tableau d'origine et le nouveau tableau font tous deux référence au même objet. Si un objet référencé change, les modifications sont visibles à la fois pour les tableaux nouveaux et d'origine.
- Pour les chaînes, les nombres et les booléens (et non les objets String, Number et Boolean), slice copie les valeurs dans le nouveau tableau. Les modifications apportées à la chaîne, au nombre ou au booléen dans un tableau n'affectent pas l'autre tableau.
Brève explication des arguments
Array.prototype.slice (beginIndex, endIndex)
- prend les arguments facultatifs beginIndex et endIndex. S'ils ne sont pas fournis, les tranches utilisent beginIndex == 0, donc il extrait tous les éléments de la collection
Array.prototype.slice.call (espace de noms, beginIndex, endIndex)
- prend un objet comme premier argument. Si nous utilisons une collection comme objet, cela signifie littéralement que nous appelons la méthode slice directement à partir de cet objet namespace.slice ()
babel
,[...coll]
appellera alors simplement toutArray.from(coll)
ce qui n'est pas un fichierArray
.