秋雨
首页
  • HTML
  • CSS
  • JavaScript
设计模式
webpack
  • 前端常识
  • ES
  • React
  • Redux
  • ReactRouter
  • 事件循环
  • 浏览器渲染流程
  • Vue项目性能优化
  • Vue
  • App
Github
首页
  • HTML
  • CSS
  • JavaScript
设计模式
webpack
  • 前端常识
  • ES
  • React
  • Redux
  • ReactRouter
  • 事件循环
  • 浏览器渲染流程
  • Vue项目性能优化
  • Vue
  • App
Github
  • 构造器模式
  • 原型链模式
  • 工厂模式
  • 抽象工厂模式
  • 建造者模式
  • 单例模式
  • 装饰器模式
  • 适配器模式
  • 适配器模式
  • 代理模式
  • 观察者模式
  • 发布订阅模式
  • 模块模式
  • 桥接模式
  • 组合模式
  • 命令模式
  • 命令模式
  • 迭代器模式
  • 职责链模式

简介

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

  1. 为遍历不同数据结构的‘集合’提供统一的接口
  2. 能遍历访问‘集合’数据中的项,不关心项的数据结构

ES5

var kerwinEach = function (arr, callback) {
  for (let i = 0; i < arr.length; i++) {
    callback(i, arr[i]);
  }
};

kerwinEach([11, 22, 33, 44], function (index, value) {
  console.log(index, value);
  var oli = document.createElement("li");
  oli.innerHTML = value;
  list.appendChild(oli);
});

示例

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>迭代器模式</title>
  </head>
  <body>
    <script>
      var obj = {
        code: 200,
        name: "kerwin",
        list: ["aaa", "bbb", "ccc"],
        [Symbol.iterator]: function () {
          let index = 0;
          console.log(12);
          return {
            next: () => {
              if (index < this.list.length) {
                return {
                  value: this.list[index++],
                  done: false,
                };
              } else {
                return {
                  value: undefined,
                  done: true,
                };
              }
            },
          };
        },
      };

      // var it = obj[Symbol.iterator]();
      // it.next();
      // it.next();
      // it.next();
      // it.next();

      for (let index of obj) {
        console.log(index);
      }
    </script>
  </body>
</html>
最后更新:
贡献者: Mrlishizhen
Prev
命令模式
Next
职责链模式