如何使类方法成为生成器函数?

时间:2019-03-10 11:19:59

标签: javascript ecmascript-6 es6-class

我正在学习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过正,但是我正在尝试学习,因此我必须问:是否存在使首选方法起作用的语法?

0 个答案:

没有答案