Можешь ли ты объяснить, как работает протокол итератора в JavaScript, включая требования к объектам-итераторам и объектам-итерируемым, дать примеры встроенных итерируемых объектов и показать, как реализовать этот протокол для собственных объектов? — ДейлиПреп