Можешь объяснить, для чего нужен `Symbol.iterator` в JavaScript и как он позволяет объектам работать с циклами `for...of` и оператором spread? — ДейлиПреп