この記事は編集レビューを必要としています。ぜひご協力ください。
この翻訳は不完全です。英語から この記事を翻訳 してください。
非標準。 レガシーイテレータプロトコルは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 } }