Протокол застарілого ітератора

Нестандартний. Протокол застарілого ітератора був особливою функціональністю 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){
         // перебір завершено
    }
}

Див. також