Мотивация

  • Вы когда-нибудь пытались пройтись по объекту, используя for...of ?
  • Вам когда-нибудь приходилось проходить через вложенный объект или любую ненормальную структуру данных?

Вот несколько примеров распространенных ошибок:

Ответ на поставленный выше вопрос... Как вы уже догадались, Итераторы и итераторы!

Итерации

Объект является итерируемым, если он определяет свое поведение при итерации, например, какие значения перебираются в цикле в конструкции for...of. Таким образом, используя эти знания, мы можем превратить такой объект, как nestedObj, во что-то, что можно обойти, что мы и называем Итерируемые объекты!

Ключевые выводы

  1. Объект считается Итерируемым, если он реализует протокол [Symbol.iterator] илипротокол [Symbol.iterator] находится вверху цепочки прототипов. В приведенном выше примере показано, что объекты не имеют [Symbol.iterator] нигде в цепочке прототипов, поэтому они создаются вручную.
  2. Итерируемый определяет свой протокол итерации (обсуждается ниже).

Вот и все! Помните об этих двух вещах, и Iterables будут намного менее пугающими.

Итераторы

Итератор — это объект, у которого есть метод next(), который возвращает объект с двумя вещами.

  1. value — Следующее значение в последовательности итераций.
  2. done — логическое значение, указывающее, исчерпана ли последовательность.

Ключевые выводы

  1. Итератор — это просто объект (помните, что функции — это объекты), у которого есть метод next(), который должен возвращать объект со свойствами value и done.
  2. Итератору не обязательно реализовывать протокол iterable, поэтому это итератор, а не итерируемый объект.
  3. Итератор обеспечивает механизм, с помощью которого iterable может пройти сам себя.

Встроенные итерации — краткий список

  • Массивы
  • Струны
  • Карты
  • Наборы

Заключение

Мы знаем, что такое итераторы и итераторы в JavaScript, некоторые их различия и классифицирующие их элементы. Честно говоря, вероятность того, что вы создадите их самостоятельно, вероятно, не очень высока, но наличие ключевого понимания того, как работает сборка в итерируемых объектах, ставит вас впереди игры.

Удачного кодирования 😀 🚀