var agg = (function(){ var index = 0, data = [1,2,3,4,5], length = data.length; return { next : function(){ var element; if(!this.hasNext){ return null; } element = data[index]; index = index + 2; return element; }, hasNext : function(){ return index < length; }, rewind : function(){// rewind : 倒带 重置指针到初始位置 index = 0; }, current : function(){ return data[index]; } } })(); // 这个循环记录1,然后3,接着5 while(agg.hasNext()){ console.log(agg.next());// 1 3 5 } // 回退 agg.rewind(); console.log(agg.current());// 1
对于集合内部结果常常变化各异,我们不想暴露其内部结构的话,但又响让客户代码透明底访问其中的元素,这种情况下我们可以使用迭代器模式。