javascript - 如何使用 javascript/ecmascript 6 中的生成器方法创建具有值集合的类?

标签 javascript ecmascript-6

在这里,我喜欢为 Service 类创建一个默认迭代器。我需要使服务可迭代,但我无法进一步思考。我相信我需要使用 *Symbol.iterator 但不知道如何使用

class Service {

  constructor() {
      this.link = [];
  }

}

var service = new Service();
service.link.push(1);
service.link.push(2);
service.link.push(3);

for (let x of service) {
  console.log(x);
}

最佳答案

是的,只需在类上定义*[Symbol.iterator]() {

class Service {
  constructor() {
    this.link = [];
  }
  *[Symbol.iterator]() {
    for (let i = 0; i < this.link.length; i++)
      yield this.link[i];
  }
}
var service = new Service();
service.link.push(1);
service.link.push(2);
service.link.push(3);
for (const x of service) {
  console.log(x);
}

关于javascript - 如何使用 javascript/ecmascript 6 中的生成器方法创建具有值集合的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49565256/

相关文章:

Javascript 获取对象属性

javascript - 如何降低 Scroll-Top Speed

javascript - Sublime Text 3 中的自动缩进方法链接

javascript - 如何使用 handlebars/mustache 和 bootstrap typeahead 来渲染项目

javascript - 箭头函数不起作用。普通的可以。为什么?

typescript - 使用 TypeScript 装饰器扩展 ES6 类时扩展类型

javascript - 当 `new constructor()` 与 mocha 和 chai 时,我如何断言抛出

javascript - Dc-sunburst、dc-Menuslect、dc-非交互图

javascript - ES6 - 导出命名导出而不导入它们?

JavaScript:尝试使用由于某种原因无法运行的类函数