js设计模式--迭代器模式
迭代器模式:
迭代器模式提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该方法中的内部表示。js中我们经常会封装一个each函数用来实现迭代器。
理解的意思:提供一个方法,去把对象的每一项按照一定的方法,访问各个元素。
上代码:
var agg = ((function(){
var index = 0,
arr = [1,2,3,4,5,6],
length = arr.length;
return {
next:function(){ //向下进行
var ele;
if(!this.hasNext) return null; //当索引值大于集合的length时判断停止
ele = arr[index]; //获取的元素
index = index +2; //索引
return ele; //返回查找到的元素
},
hasNext:function(){ //判断是否已经找完了
return index<length;
},
rewind:function(){ //把指针归零重置
index=0;
},
current:function(){ //返回指定的数值
return arr[index]
}
}
})())
执行:
while (agg.hasNext()) {
console.log(agg.next()); // 1,3,5
}
当然,你也可以通过额外的方法来重置数据,然后再继续其它操作:
// 重置
agg.rewind();
console.log(agg.current()); //
在jQuery这种也有这样的形式,比如each,
$.each([1, 2, 3, 4], function (index, value) {
console.log(index + ': ' + value);
});
写了个例子,操作数组:
function each(arr,callBack){
for(var i=0;i<arr.length;i++){
if(callBack.call(arr[i],i,arr[i]) === false){
return false;
}
}
};
var as = [1,2,3,4,5];
each(as,function(index,item){
console.log(index);//0,1,2,3,4
});
写了个例子,操作对象:
function each(arr,callBack){
for(var i in arr ){
if(callBack.call(arr[i],i,arr[i]) === false){
return false;
}
}
}
var as = {a:1,b:2,c:3,d:4};
each(as,function(index,item){
console.log(index);a,b,c,d
});
迭代器的使用场景是:对于集合内部结果常常变化各异,我们不想暴露其内部结构的话,但又响让客户代码透明底访问其中的元素,这种情况下我们可以使用迭代器模式。
参考:《javascript设计模式》
汤姆大叔:http://www.cnblogs.com/TomXu/archive/2012/03/09/2358903.html
js设计模式--迭代器模式的更多相关文章
- 19. 星际争霸之php设计模式--迭代器模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- java设计模式——迭代器模式
一. 定义与类型 定义:提供一种方法,顺序访问一个集合对象中的各个元素,而又不暴露该对象的内部表示 类型:行为型. 二. 使用场景 (1) 访问一个集合对象的内容而无需暴露它的内部表示 (2) 为遍 ...
- [Head First设计模式]生活中学设计模式——迭代器模式
系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式— ...
- JAVA 设计模式 迭代器模式
用途 迭代器模式 (Iterator) 提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示. 迭代器模式是一种行为型模式. 结构
- 深入浅出设计模式——迭代器模式(Iterator Pattern)
模式动机 一个聚合对象,如一个列表(List)或者一个集合(Set),应该提供一种方法来让别人可以访问它的元素,而又不需要暴露它的内部结构.针对不同的需要,可能还要以不同的方式遍历整个聚合对象,但是我 ...
- JavaScript设计模式 - 迭代器模式
迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示. 迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后,即使不关心对象的内部构造,也可以按顺 ...
- javascript设计模式-迭代器模式(Iterator)
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 设计模式 --迭代器模式(Iterator)
能够游走于聚合内的每一个元素,同时还可以提供多种不同的遍历方式. 基本概念: 就是提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示. 使用迭代器模式的优点: 遍历集合或者数 ...
- javascript设计模式——迭代器模式
前面的话 迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示.迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后,即使不关心对象的内部构造,也 ...
随机推荐
- iOS学习笔记(十三)——获取手机信息(UIDevice、NSBundle、NSLocale)
iOS的APP的应用开发的过程中,有时为了bug跟踪或者获取用反馈的需要自动收集用户设备.系统信息.应用信息等等,这些信息方便开发者诊断问题,当然这些信息是用户的非隐私信息,是通过开发api可以获取到 ...
- 【转】2015年薪酬大涨的15个IT岗位
近日,国外科技 IT 招聘公司 Robert Half 分析了 70 个科技职位后发现 2015 年从事 IT 从业人员的平均起薪将攀升至 5.7%,其中 15 个职位的提升潜力最大. 当企业在招聘过 ...
- 获取url参数和时间格式化
1. 获取url参数: var url = request("url"); //获取url参数 function request(paras) { //decodeURI() 函数 ...
- 【转】Android ListView加载不同的item布局
原创教程,转载请保留出处:http://www.eoeandroid.com/thread-72369-1-1.html 最近有需求需要在listView中载入不同的listItem布局,开始 ...
- 医院his系统数据库恢复
医院IT系统的重要性堪比金融行业,“银行系统宕机,老百姓不能取钱:医院HIS系统宕机,老百姓不能看病”, 医院信息系统称得上是迄今为止企业级信息系统中最复杂的一类. 某医院HIS系统SQL2008数 ...
- IM 融云 之 列表及封装
// // ChatListIMViewController.m // testRongCloudIM // // Created by WoodGao on 16/1/8. // Copyright ...
- 搜索框(SearchView)的功能与用法
SearchView是搜索框组件,它可以让用户在文本框内输入汉字,并允许通过监听器监控用户输入,当用户用户输入完成后提交搜索按钮时,也通过监听器执行实际的搜索. 使用SearchView时可以使用如下 ...
- HibernateTemplate实现查询distinct构造对象
1,hql代码 select distinct new UserLogins( u.username,u.person,u.accName) from UserLogins u where u.ipA ...
- Microsoft IoT Starter Kit 开发初体验-反馈控制与数据存储
在上一篇文章<Microsoft IoT Starter Kit 开发初体验>中,讲述了微软中国发布的Microsoft IoT Starter Kit所包含的硬件介绍.开发环境搭建.硬件 ...
- 简单加解密算法 - vb.net
Public Class Form1 Dim charAarray() As Char '加密 Private Sub Btn_En_Click(sender As System.O ...