Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

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++];
           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){
         // iteration over
    }
}

Mira también

Etiquetas y colaboradores del documento

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