目前,我正在提高我的ES6技能一点。我正在研究Iterator/生成器语法。我有一个工作的例子
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循环之外,是否还有一种更简洁的方式来编写这个呢?
发布于 2017-11-10 21:40:51
我会用yield*来做
*[Symbol.iterator]() {
yield* this._books;
}https://stackoverflow.com/questions/47231318
复制相似问题