废弃的Firefox专属迭代协议
Firefox在version 26版本生效的与ES2015迭代协议相似的另一种迭代协议。以下统称为旧迭代协议。
旧迭代器对象在使用next()方法时,会在循环到最后时抛出StopIteration
。
属性 | 描述 |
---|---|
next |
一个会返回值的无参数函数 |
旧迭代器与ES2015迭代器的区别
- 旧迭代器在调用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 } }