迭代器模式基本实现 Iterator Pattern
在 ECMAScript 中 Iterator 最早其實是要採用類似 Python 的 Iterator 規範,就是 Iterator 在沒有元素之後,執行 next 會直接拋出錯誤;但後來經過一段時間討論後,決定採更 functional 的做法,改成在取得最後一個元素之後執行 next 永遠都回傳 { done: true, value: undefined }
class IteratorFromArray {
constructor(arr) {
this._array = arr;
this._cursor = 0;
}
next() {
return this._cursor < this._array.length
? { value: this._array[this._cursor++], done: false }
: { done: true };
}
}