目前我正在銳化我的ES6技能一點。我正在研究Iterator/Generator-syntax。我有Javascript ES6迭代器協議和forEach
class Library {
constructor(){
this._books = [];
}
addBook(book){
this._books.push(book);
}
get books() {
return this._books;
}
*[Symbol.iterator]() {
for(let i=0; i<this._books.length; i++) {
yield this._books[i];
}
}
}
l = new Library();
l.addBook("Book1");
l.addBook("Book2");
for(let book of l){
console.log(book);
}
如果一切正常的工作示例。但我的第一種方法是嘗試類似
*[Symbol.iterator]() {
this._books.forEach(
book => yield book
)
}
這是(顯然)不正確。除了循環使用for
或while
還有更簡潔的方法,寫這個嗎?
WAG,但是如果Array實現迭代器模式,則可以(再次,WAG)'return _books.iterator()'。這就是我在C#中做的,當包裝實現IEnumerable的類型時。 – Will
@Will WAG是什麼意思? – shash678
@ shash678野驢猜測。 – Will