Нестандартний. Протокол застарілого ітератора був особливою функціональністю SpiderMonkey, яка була прибрана у Firefox 58+. Для використання у майбутньому розгляньте цикли for..of та протокол ітератора.
Протокол застарілого ітератора лише для Firefox
Firefox, до версії 26, реалізовував інший протокол ітератора, схожий на стандартний Протокол ітератора ES2015.
Об'єкт є застарілим ітератором, коли реалізує метод next()
з наступною семантикою, та викидає StopIteration
в кінці перебору.
Властивість | Значення |
---|---|
next |
Функція з нулем аргументів, яка повертає значення. |
Різниця між протоколами ітератора ES2015 та застарілого ітератора
- Значення поверталось безпосередньо як повернене значення викликів
next
, а не як властивістьvalue
поверненого об'єкта - Переривання перебору виражалось викиданням об'єкта
StopIteration
.
Простий приклад зі старим протоколом
function makeIterator(array){
var nextIndex = 0;
return {
next: function(){
if(nextIndex < array.length){
return array[nextIndex++];
else
throw new StopIteration();
}
}
}
var it = makeIterator(['yo', 'ya']);
console.log(it.next()); // 'yo'
console.log(it.next()); // 'ya'
try{
console.log(it.next());
}
catch(e){
if(e instanceof StopIteration){
// перебір завершено
}
}