迭代器模式(Iterator)

提供一种顺序访问聚合对象元素的方法,而不会暴露其基础表示。

class Iterator {
  constructor(items) {
    this.index = 0;
    this.items = items;
  }
  first() {
    this.index = 0;
    return this.items[0];
  }
  next() {
    this.index++;
    return this.items[this.index];
  }
  hasNext() {
    return this.items.length - 1 > this.index;
  }
  reset() {
    this.index = 0;
  }
  each(callback) {
    for (let i = 0; i < this.items.length; i++) {
      callback(this.items[i]);
    }
  }
}
const items = ["one", 2, "circle", true, "Applepie"];
const iter = new Iterator(items);

console.log(iter.first());
console.log(iter.next());
console.log(iter.next());
console.log(iter.next());
console.log(iter.hasNext());
console.log(iter.next());

iter.each(function (e) {
  console.log(e);
});