Найти в Дзене
Программист - турист

Подготовка к собеседованию frontend (Symbol.iterator)

Symbol.iterator делает любые ваши объекты «родными» для for...of, спреда ([...]), Array.from, деструктурирования и т. п. Ниже будут приведены реальные примеры для реальных задач. Часто нужно получить список рабочих дат для планирования задач/напоминаний, генерации слотов и т. п. Полезно для вычисления контекста: ближайший positioned родитель, контейнер с data-*, ближайшая форма и т. п. Когда нужно отдать данные порциями (например, рендерить таблицу страницами или обрабатывать пачками в воркере). Делаем итерируемую последовательность шагов анимации (1 → 1.2 → 0.9 → 1). Каждый шаг — цель, длительность и easing. Повторный запуск — без побочных эффектов, потому что [Symbol.iterator] каждый раз создаёт новый итератор.
Оглавление

Symbol.iterator делает любые ваши объекты «родными» для for...of, спреда ([...]), Array.from, деструктурирования и т. п.

Ниже будут приведены реальные примеры для реальных задач.

Рабочие дни между датами (с исключениями праздников)

Часто нужно получить список рабочих дат для планирования задач/напоминаний, генерации слотов и т. п.

Обход предков DOM-узла (поиск ближайшего подходящего контейнера)

Полезно для вычисления контекста: ближайший positioned родитель, контейнер с data-*, ближайшая форма и т. п.

-2

«Пагинация» по массиву кусками (батч-обработка/виртуализация)

Когда нужно отдать данные порциями (например, рендерить таблицу страницами или обрабатывать пачками в воркере).

-3

Клик по кнопке (bounce-scale) через rAF

Делаем итерируемую последовательность шагов анимации (1 → 1.2 → 0.9 → 1). Каждый шаг — цель, длительность и easing. Повторный запуск — без побочных эффектов, потому что [Symbol.iterator] каждый раз создаёт новый итератор.

-4