迭代器模式
来源:互联网 发布:收看地方电视台的软件 编辑:程序博客网 时间:2024/06/06 01:49
javascript实现迭代器
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);//输出iterator1和iterator2相等
模仿jQuery类数组和对象迭代
$.each = function (obj,callback) { var value, i=0, length = obj.length, isArray = isArrayLike(obj); if(isArray) { for(;i<length;i++){ value = callback.call(obj[i],i,obj[i]); if(value === false){ break; } } }else { for(i in obj){ value = callback.call(obj[i],i,obj[i]); if(value === false){ break; } } } return obj; }
利用迭代获取浏览器上传插件
有效的避免了多重条件分支语句,通过参数的优先级来确定选择哪一个浏览器上传插件
var iteratorUploadObj = function () { for(var i=0,fn;fn = arguments[i++];){ var uploadObj = fn(); if(uploadObj !== false){ return uploadObj } } } var uploadObj = iteratorUploadObj(getActiveUploadObj, getFlashUploadObj, getFormUploadObj);
阅读全文
0 0
- 行为模式-迭代器模式
- 设计模式-迭代器模式
- 设计模式 迭代器模式
- 设计模式-迭代器模式
- 设计模式--迭代器模式
- 【设计模式】迭代器模式
- 设计模式-迭代器模式
- 设计模式- 迭代器模式
- 设计模式 - 迭代器模式
- 设计模式:迭代器模式
- 行为模式-迭代器模式
- 设计模式 - 迭代器模式
- 设计模式-迭代器模式
- 设计模式--迭代器模式
- 设计模式---迭代器模式
- 设计模式---迭代器模式
- 【设计模式】迭代器模式
- 设计模式 迭代器模式
- voc_eval.py 解析
- struts2中Action配置的默认值
- 03-JDBC操作java语言数据库
- docker Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon runn
- 内存地址与寻址
- 迭代器模式
- postMessage 跨文档消息传递
- POJ 2115(解线性同余方程)
- EditText光标不显示问题
- 实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
- @Transactional事务不起作用的解决
- 读《中国文脉》有感
- 算法:输入一个四位数,然后分别输出这个四位数的每一位数字
- 转,面试总结