TL; DR;
Array.prototype.slice.call(nodelist).filter
Метод slice () повертає масив. Цей повернутий масив є неглибокою копією колекції (NodeList),
тому він працює швидше, ніж Array.from (),
тому працює так само швидко, як Array.from ()
Елементи вихідної колекції копіюються у повернутий масив наступним чином:
- Для посилань на об'єкти (а не власне на об'єкт) фрагмент копіює посилання на об'єкти в новий масив. І оригінальний, і новий масив посилаються на один і той же об'єкт. Якщо об’єкт, на який посилається, змінюється, зміни видно як новому, так і оригінальному масивам.
- Для рядків, чисел і булевих значень (не об’єктів String, Number та Boolean) фрагмент копіює значення в новий масив. Зміни рядка, числа або логічного значення в одному масиві не впливають на інший масив.
Коротке пояснення щодо аргументів
Array.prototype.slice (beginIndex, endIndex)
- приймає необов’язкові аргументи beginIndex та endIndex. Якщо їх не передбачено, фрагменти використовує beginIndex == 0, таким чином він витягує всі елементи з колекції
Array.prototype.slice.call (простір імен, beginIndex, endIndex)
- приймає об'єкт як перший аргумент. Якщо ми використовуємо колекцію як об'єкт, це буквально означає, що ми викликаємо метод slice безпосередньо з цього простору імен об'єкта.
babel
, тоді[...coll]
просто попроситеArray.from(coll)
про все, що не єArray
.