Это экспериментальная технология, часть предложения Harmony (ECMAScript 6).
Поскольку спецификация этой технологии ещё не стабилизировалась, проверьте таблицу совместимости её использования в различных браузерах. Также обратите внимание, что синтаксис и поведение экспериментальной технологии могут быть изменены в будущих версиях браузеров в соответствии с изменениями в спецификации.
Сводка
Начальное значение свойства @@iterator является тем же самым функциональным объектом, что и начальное значение, возвращаемое методом values().
Синтаксис
arr[Symbol.iterator]()
Примеры
Пример: итерация посредством цикла for...of
var arr = ['w', 'y', 'k', 'o', 'p'];
// ваш браузер должен поддерживать цикл for..of
// и переменные с областью видимости let в циклах for
for (let letter of arr) {
console.log(letter);
}
Пример: альтернативный способ итерации
var arr = ['w', 'y', 'k', 'o', 'p']; var eArr = arr[Symbol.iterator](); console.log(eArr.next().value); // w console.log(eArr.next().value); // y console.log(eArr.next().value); // k console.log(eArr.next().value); // o console.log(eArr.next().value); // p
Спецификации
| Спецификация | Статус | Комментарии |
|---|---|---|
| ECMAScript 6 (ECMA-262) Определение 'Array.prototype[@@iterator]()' в этой спецификации. |
Кандидат в рекомендации | Изначальное определение. |
Совместимость с браузерами
| Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Базовая поддержка | 38 |
17 (17) (.iterator) 27 (27) (["@@iterator"]) 36 (36) ([Symbol.iterator]) |
Нет | 25 | Нет |
| Возможность | Android | Chrome для Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Базовая поддержка | Нет | Нет |
17.0 (17) (.iterator) 27.0 (27) (["@@iterator"]) 36.0 (36) ([Symbol.iterator]) |
Нет | 25 | Нет |
Примечания по Gecko
- С Gecko 17 (Firefox 17 / Thunderbird 17 / SeaMonkey 2.14) по Gecko 26 (Firefox 26 / Thunderbird 26 / SeaMonkey 2.23 / Firefox OS 1.2) вместо символа
@@iteratorиспользовалось свойствоiterator(ошибка 907077), а с Gecko 27 по Gecko 35 — строка-заменитель"@@iterator"(ошибка 918828).