MDN’s new design is in Beta! A sneak peek:

The legacy Iterator protocol

Esta traducción está incompleta. Por favor, ayuda a traducir este artículo del inglés.

Non-standard. The legacy iterator protocol is a SpiderMonkey-specific feature, and will be removed at some point. For future-facing usages, consider using for..of loops and the iterator protocol.

The deprecated Firefox-only iterator protocol

Firefox, prior to version 26 implemented another iterator protocol that is similar to the standard ES6 Iterator protocol.

An object is an legacy iterator when it implements a next() method with the following semantics, and throws StopIteration at the end of iteration.

Property Value
next A zero arguments function that returns an value.

Difference between legacy and ES6 iterator protocols

  • The value was returned directly as a return value of calls to next, instead of the value property of a placeholder object
  • Iteration termination was expressed by throwing a StopIteration object.

Simple example with the old protocol

function makeIterator(array){
    var nextIndex = 0;

    return {
       next: function(){
           if(nextIndex < array.length){
               return array[nextIndex++];
               throw new StopIteration();

var it = makeIterator(['yo', 'ya']);

console.log(; // 'yo'
console.log(; // 'ya'
    if(e instanceof StopIteration){
         // iteration over

Mira también

Etiquetas y colaboradores del documento

 Colaboradores en esta página: clystian
 Última actualización por: clystian,