提供一种顺序访问聚合对象元素的方法,而不会暴露其基础表示。
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);
});