目前我正在提高我的 ES6 技能。我正在研究迭代器/生成器语法。我有一个
的工作示例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
循环之外,还有更简洁的方法来编写此代码吗?
最佳答案
我会用 yield*
来做:
*[Symbol.iterator]() {
yield* this._books;
}
关于Javascript ES6 迭代器协议(protocol)和 forEach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47231318/