码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript设计模式与开发实践-第7章-迭代器模式

时间:2016-05-19 01:30:49      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

迭代器模式的定义:提供一种方法访问一个聚合对象中的各个对象。可以做到不关心对象的内部构造,也可以按顺序的访问每个原宿。

 

内部迭代器:外部只需要一次初始调用

 1 var each = function( ary, callback ){
 2     for (var i = 0; i < ary.length; i++) {
 3         callback.call( ary[i], i, ary[i] );
 4     };
 5 }
 6 
 7 // 只进行了这一次调用
 8 each( [ 1, 2, 3 ], function( i, n ){
 9     // 进行对数组的操作
10 });

 

外部迭代器:在外部必须进行显式的迭代

 1 // 外部迭代器的实现,具体的客户操作这里就不写了
 2 var iterator = function( ary ){
 3     var current = 0;
 4 
 5     var next = function(){
 6         current++;
 7     };
 8 
 9     var isDone = function(){
10         return current >= ary.length;
11     };
12 
13     var getCurrent = function(){
14         return ary[ current ];
15     };
16 
17     // 由于这里产生了闭包,所以返回的对象方法依然可以访问到ary
18     return {
19         next : next,
20         isDone : isDone,
21         getCurrent : getCurrent
22     }
23 }

 

中止迭代器:给回调器设置callback函数返回false时跳出循环

 

迭代器的应用举例:文件上传有多种方式的时候,如果避免使用条件选择语句来选择上传方式

解决方案大概为:

  • 将每个上传方式都写成一个函数,函数返回upload对象,同时如果是不兼容的上传方式的话就返回false
  • 将所有上传方式的函数作为一个数组进行迭代,直到迭代到某个上传方式是可以的
  • 使用这个上传方式函数返回的对象进行上传

JavaScript设计模式与开发实践-第7章-迭代器模式

标签:

原文地址:http://www.cnblogs.com/magicshow/p/5507202.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!