迭代器模式提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该方法中的内部表示。
jQuery中我们经常会用到一个each函数就是迭代器模式
作用
为遍历不同的集合结构提供一个统一的接口,从而支持同样的算法在不同的集合结构上进行操作
对于集合内部结果常常变化各异,我们不想暴露其内部结构的话,但又想让客户代码透明的访问其中的元素,这种情况下我们可以使用迭代器模式。
注意事项
- 一般的迭代,我们至少要有2个方法,hasNext和Next,这样才做到遍历所有对象。
- 遍历的同时更改迭代器所在的集合结构可能会导致问题(比如C#的foreach里不允许修改item)
<script type="text/javascript"> var arr = ["1","2","3"]; var diedai = (function(){ var length = arr.length , index = 0; return{ hasNext:function () { return index < length; }, next:function () { var data = arr[index]; index = index+1; return data; } }; })(); while(diedai.hasNext()){ console.log(diedai.next()); } </script>