迭代器模式

迭代器模式是指提供一种方法顺序访问一个聚合对象的各个对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式可以把迭代的过程从业务逻辑分离出来,在使用迭代器模式模式之后,即使不关心对象的内部构造,也可以按顺序访问其中的每一个元素。

  • jQuery中的迭代器
    $.each([1,2,3],function(i, n) {
    console.log('当前下标为:' + i);
    console.log('当前值为:' + n);
    });

  • 手动实现一个迭代器----each函数
    var each = function(ary, callback) {
    for(var i= 0, l= ary.length; i< l; i++) {
    callback.call(ary[i], i, ary[i]);
    }
    };

    each([1,2,3], function(i, n) {
        alert([i,n]);
    })
    
  • 外部迭代器
    var Iterator = function(obj) {
    var current = 0;

        var next = function() {
            current +=1;
        };
    
        var isDone = function() {
            return current >= obj.length;
        };
    
        var getCurrItem = function() {
            return obj[current];
        };
    
        return {
            next: next,
            isDone: isDone,
            getCurrItem: getCurrItem
        }
    };
    
    var compare = function(iterator1, iterator2) {
        while(!iterator1.isDone() && !iterator2.isDone()) {
            if(iterator1.getCurrItem() !== iterator2.getCurrItem()) {
                throw new Error('iterator1 和 iterator2 不相等');
            }
            iterator1.next();
            iterator2.next();
        }
        alert('iterator1 和 iterator2相等')
    }
    var iterator1 = Iterator([1,2,3]);
    var iterator2 = Iterator([1,2,3]);
    compare(iterator1,iterator2);  //terator1 和 iterator2相等
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 6,547评论 1 10
  • 1 场景问题# 1.1 工资表数据的整合## 考虑这样一个实际应用:整合工资表数据。 这个项目的背景是这样的,项目...
    七寸知架构阅读 7,361评论 0 53
  • 定义:提供一种方法顺序访问一个容器对象中的各个元素,而又不需要暴露该对象的内部表示应用场景:迭代器模式是与集合共生...
    明朗__阅读 2,656评论 0 0
  • 定义 提供一种方式顺序访问一个容器对象中的各个元素,而又不需要暴露该对象的内部结构; 在Java中使用最多的一种模...
    贾里阅读 1,796评论 0 0
  • 在讲道理之前,我们先来摆事实。 这是一个平凡的不能再平凡的工作日,某日某时某公司某部门某工位某台打印机前,某员工小...
    竞走的蜗牛阅读 1,477评论 0 0

友情链接更多精彩内容