目前我正在锐化我的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