深入理解JavaScript系列(35):设计模式之迭代器模式详解
介绍
迭代器模式(Iterator):提供一种方法顺序一个聚合对象中各个元素,而又不暴露该对象内部表示。
迭代器的几个特点是:
1.访问一个聚合对象的内容而无需暴露它的内部表示。
2.为遍历不同的集合结构提供一个统一的接口,从而支持同样的算法在不同的集合结构上进行操作。
3.遍历的同时更改迭代器所在的集合结构可能会导致问题(比如C#的foreach里不允许修改item)。
正文
一般的迭代,我们至少要有2个方法,hasNext()和Next(),这样才做做到遍历所有对象,我们先给出一个例子:
varagg=(function(){ varindex=0, data=[1,2,3,4,5], length=data.length;
return{ next:function(){ varelement; if(!this.hasNext()){ returnnull; } element=data[index]; index=index+2; returnelement; },
hasNext:function(){ returnindex<length; },
rewind:function(){ index=0; },
current:function(){ returndata[index]; }
}; }());