The legacy Iterator protocol
Kein Standard. Das veraltete Iterator-Protokoll war ein SpiderMonkey-spezifisches Feature, welches in Firefox 58 entfernt wurde. Als Alternative werden for..of Schleifen und das iterator protocol empfohlen.
Das veraltete Iterator-Protokoll
Vor Version 26 implementierte Firefox ein anderes Iterator-Protokoll, welches dem ES2015 Iterator protocol Standard entspricht.
Ein Objekt ist ein veralteter Iterator, wenn es eine next()
Methode mit den folgenden Semantiken implementiert, welches zum Ende der Iteration StopIteration
wirft.
Property | Value |
---|---|
next |
Eine Funktion ohne Argumente, welche einen Wert zurückgibt. |
Unterschied zwischen dem veralteten und dem ES2015 Iterator-Protokoll
- Der Wert wurde direkt von der
next
Methode zurückgegeben, statt der Wert dervalue
Eigenschaft eines Platzhalter-Objekts zu sein. - Das Ende der Iteration wurde durch das Werfen eines
StopIteration
Objekts ausgedrückt.
Einfaches Beispiel mit dem alten Protokoll
function kreiereIterator(array){
var nextIndex = 0;
return {
next: function(){
if(nextIndex < array.length){
return array[nextIndex++];
else
throw new StopIteration();
}
}
}
var it = kreiereIterator(['yo', 'ya']);
console.log(it.next()); // 'yo'
console.log(it.next()); // 'ya'
try{
console.log(it.next());
}
catch(e){
if(e instanceof StopIteration){
// Iteration beendet.
}
}