zoukankan      html  css  js  c++  java
  • javaScript设计模式与开发实践(四)迭代器模式

    迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。

    实现一个each函数:

    var each = function( ary, callback ){
      for ( var i = 0, l = ary.length; i < l; i++ ){
        callback.call( ary[i], i, ary[ i ] ); // 把下标和元素当作参数传给callback 函数
      }
    };
    
    each( [ 1, 2, 3 ], function( i, n ){
      alert ( [ i, n ] );
    });
    

     该函数属于内部迭代器,内部定义好了迭代规则,外部只需要一次初始调用。

    实现一个compare函数:(外部迭代器)

    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 ); // 输出:iterator1 和iterator2 相等
    
  • 相关阅读:
    软件工程团队作业2.1——《业务流程模型》
    软件工程团队作业1——《调研提纲》
    2020软件工程第四次作业
    作业四(一)
    17074230 团队项目选题报告
    计算与软件工程 作业5
    计算与软件工程 作业4
    17074230 第三次作业
    17074230 第二次作业
    17074230 赵雅雅 第一次作业
  • 原文地址:https://www.cnblogs.com/dreamerjdw/p/6438271.html
Copyright © 2011-2022 走看看