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

この記事は編集レビューを必要としています。ぜひご協力ください

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

非標準。 レガシーイテレータプロトコルは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,