TL; DR;
Array.prototype.slice.call(nodelist).filter
Il metodo slice () restituisce un array. L'array restituito è una copia superficiale della raccolta (NodeList)
Quindi funziona più velocemente di Array.from ()
Quindi funziona velocemente come Array.from ()
Gli elementi della raccolta originale vengono copiati nell'array restituito come segue:
- Per i riferimenti agli oggetti (e non all'oggetto reale), slice copia i riferimenti agli oggetti nel nuovo array. Sia la matrice originale che quella nuova fanno riferimento allo stesso oggetto. Se un oggetto referenziato cambia, le modifiche sono visibili sia per la matrice nuova che per quella originale.
- Per stringhe, numeri e booleani (non oggetti String, Number e Boolean), slice copia i valori nel nuovo array. Le modifiche alla stringa, al numero o al valore booleano in un array non influiscono sull'altro array.
Breve spiegazione sugli argomenti
Array.prototype.slice (beginIndex, endIndex)
- accetta gli argomenti facoltativi beginIndex e endIndex. Se non vengono fornite sezioni, utilizza beginIndex == 0, quindi estrae tutti gli elementi dalla raccolta
Array.prototype.slice.call (namespace, beginIndex, endIndex)
- accetta un oggetto come primo argomento. Se usiamo una collezione come oggetto, significa letteralmente che chiamiamo il metodo slice direttamente dallo spazio dei nomi di quell'oggetto .
babel
,[...coll]
chiamerà semplicementeArray.from(coll)
tutto ciò che non è un fileArray
.