博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS设计模式初识(四)-迭代器模式
阅读量:7127 次
发布时间:2019-06-28

本文共 1284 字,大约阅读时间需要 4 分钟。

定义

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

4.1 自制迭代器each

function each(arr, callback=()=>{}) {        if (!Array.isArray(arr)) {            return throw new Error('传入的第一个参数不是数组');        }        for (let i=0;i
',item, index, array); });复制代码

4.2 外部迭代器 iterator

function Iterator(obj) {        const current = 0;        const next = () => {            current++;        }        const isDone = () => {            return current >= obj.length;        }          const getItem = () => {            return obj[current];        }        return {            next: next,            isDone: isDone,            getItem: getItem,        }              }    function compare(a, b) {        while(!a.isDone() && !b.isDone()) {            if (a.getItem() !== b.getItem()) {                throw new Error('iterator1 和 iterator2 不相等');            }            a.next();            b.next();        }        console.log('iterator1 和 iterator2 相等')    }    const iterator1 = Iterator([1,2,3]);    const iterator2 = Iterator([1,2,3]);    compare(iterator1, iterator2);复制代码

4.3 ES6 Iterator 迭代器

待完成

总结

迭代器模式是一种相对简单的模式,简单到很多时候我们都不认为它是一种设计模式。目前的绝大部分语言都内置了迭代器。

转载于:https://juejin.im/post/5cfd31fd518825728262a4f0

你可能感兴趣的文章
客服系统从Require.js到Webpack
查看>>
React 16 中的异常处理
查看>>
独家解析Javascript原型继承
查看>>
springboot集成mqtt
查看>>
重拾css(3)——学习css的思路
查看>>
SegmentFault 社区访谈 | 有位公子在奇舞
查看>>
jQuery源码分析之jQuery的定义
查看>>
一些经典面试题分析(上)
查看>>
[JS相关的记录01] 那什么来面对你,面向对象编程(__proto__,prototype,constructor以及原型链)...
查看>>
夏日葵电商:搭建一个商城系统,N+功能方案揭秘!
查看>>
Akka系列(一):Akka简介与Actor模型
查看>>
yii2获得从数据库获得数据的方法并处理
查看>>
Android开发百度地图(一)之初体验
查看>>
微服务指南走北(四):你不愿意做微服务架构的十个理由
查看>>
CSS代码重构与优化之路
查看>>
使用 sigprocmask 和 sigpending 在程序正文中捕获和处理信号
查看>>
Bodymovin插件的使用
查看>>
详细深入分析 Java ClassLoader 工作机制
查看>>
关于设计模式
查看>>
对一个“老”架构的重新思考
查看>>