定义
迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后,即迭代器模式使不关心对象的内部构造,也可以按顺序访问其中的每个元素。
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 迭代器
待完成
总结
迭代器模式是一种相对简单的模式,简单到很多时候我们都不认为它是一种设计模式。目前的绝大部分语言都内置了迭代器。