MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

The legacy Iterator protocol

この翻訳は不完全です。英語から この記事を翻訳 してください。

非標準。 レガシーイテレータプロトコルはSpiderMonkey固有の機能で、ある時点で取り除かれます。将来向きの用途に、for..ofループとiterator protocolを使用することを検討してください。

非推奨のFirefox専用イテレータプロトコル

Firefox version 26以前は、標準のES6 Iterator protocolに似ている別のイテレータプロトコルを実装していました。

オブジェクトが次のセマンティックスをもつnext()メソッドを実装するとき、そのオブジェクトはレガシーイテレータで、イテレーションの最後にStopIterationをスローします。

プロパティ
next 引き数なしの関数。値を返します。

レガシーイテレータプロトコルとES6イテレータプロトコルの違い

  • プレースホルダオブジェクトのvalueプロパティのかわりに、nextの呼び出しの戻り値として直接値が返されます。
  • 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){
         // iteration over
    }
}

関連情報

ドキュメントのタグと貢献者

 このページの貢献者: shide55
 最終更新者: shide55,