迭代器模式

14 阅读1分钟

迭代器

迭代: 意味着,按照顺序访问元素

常见可迭代

string. map,set,Array,arguments 可迭代:

  1. 可以通过for of 来进行迭代
  2. 扩展运算,解构等

条件

  1. 只有具备 Symbo.iterator 迭代器,返回对象,特征为,具备next vakue,done等结构

核心

  1. 对象具备一个迭代器: 一个对象,包含next 方法,并返回,next 执行,获取下一个值,done 代表是否迭代完毕
function toIteRator(obj) {
  return {
    ...obj,
    [Symbol.iterator]() {
      let index = 0;
      // 目前是对象在调用这个迭代器,所以this 就指向了这个对象
      const Objects = Object.keys(this);
      return {
        next() {
          if (index < Object.keys(obj).length) {
            return { value: this[Objects[index++]], done: false };
          } else {
            return { done: true };
          }
        }
      }
    },
  };
}