我正在学习ES6生成器功能以及类。我正在尝试将它们组合在一起,但不知道是否您可以使用,以及如何使用。这是我想要做的:
class Container {
constructor(names) {
this._names = names;
}
// Won't work:
//itemsWith*(part) {
// for (const name of this._names) {
// if (name.includes(part)) yield name;
// }
//}
// Workaround:
itemsWithPartGeneratorFunc(part) {
const capturedNames = this._names;
function* itemsWith() {
for (const name of capturedNames) {
if (name.includes(part)) yield name;
}
}
return itemsWith;
}
}
const group = new Container(['blue dragon', 'red tiger', 'green tiger']);
// Won't work:
// for (const name of group.itemsWith('tiger')) { console.log(name); }
// Workaround:
for (const name of group.itemsWithPartGeneratorFunc('tiger')()) { console.log(name); }
我了解在我上面的人为例子中,这完全是矫kill过正,但是我正在尝试学习,因此我必须问:是否存在使首选方法起作用的语法?