模式学习(四)-迭代器

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

 

对于集合内部结果常常变化各异,我们不想暴露其内部结构的话,但又响让客户代码透明底访问其中的元素,这种情况下我们可以使用迭代器模式。

 

posted @ 2013-12-24 18:42  楚玉  阅读(156)  评论(0编辑  收藏  举报