迭代器遍历过程
创建一个指针对象,指向当前数据结构的起始位置实现迭代器必须实现Symbol.iterator属性
let arr = ["a","b","c"];let iter = arr[Symboliterator]();
iter
//Array Iterator {} 一个迭代器
iter.next()
//{value: "a", done: false} done:现在是否已经完成
iter.next()
//{value: "b", done: false}
iter.next()
//{value: "c", done: false}
iter.next()
//{value: undefined, done: true}
for of 来循环迭代器接口
实现iterator接口的自定义类示例
class RangeIterator {
constructor(start, stop, step) {
this.value = start;
this.stop = stop;
this.step = step;
}
[Symbol.iterator]() {
return this;
}
next() {
let value = this.value;
if (value < this.stop) {
this.value += this.step;
return { done: false, value: value };
}
return { done: true, value: undefined };
}
}
function range(start, stop, step = 1) {
return new RangeIterator(start, stop, step);
}
for (let value of range(0, 9, 2)) {
console.log(value);
}