--- title: Symbol.iterator slug: Web/JavaScript/Reference/Global_Objects/Symbol/iterator tags: - ECMAScript6 - JavaScript - Свойство - Символы translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/iterator ---
Symbol.iterator
— известный символ, задающий итератор объекта, используемый по умолчанию. Применяется в конструкции for...of
.
Каждый раз, когда объект должен быть проитерирован (как, например, в начале цикла for..of
), метод @@iterator
вызывается без аргументов, а возвращённый итератор используется непосредственно для получения значений.
Некоторые встроенные типы имеют стандартное итерационное поведение, в то время как другие типы (как {{jsxref("Object")}}) таким свойством не обладают. Метод @@iterator
имеют следующие встроенные типы:
Смотрите также Протоколы перебора для получения дополнительных сведений.
Мы можем создавать собственные итерируемые объекты, подобно следующему коду:
var myIterable = {} myIterable[Symbol.iterator] = function* () { yield 1; yield 2; yield 3; }; [...myIterable] // [1, 2, 3]
Если метод @@iterator
объекта не возвращает итератор, то это плохо оформленный итерируемый объект, его использование, скорее всего, приведёт к возникновению исключений или неправильному поведению:
var nonWellFormedIterable = {} nonWellFormedIterable[Symbol.iterator] = () => 1 [...nonWellFormedIterable] // TypeError: [] is not a function
{{Compat}}