利用ES6的iterator接口生成自定义可遍历对象

class iterator {
  constructor() {
    this.data = [1, 2, 3, 4, 5, 6, 7, 8, 9];
  }
  [Symbol.iterator]() { // 初始化
    this.index = this.data.length - 1;
    return this;
  }
  next() { // 迭代需要返回元素值value以及是否已完成done
    if (this.index < 0) {
      return { value: this.data[this.index--], done: true };
    }
    return { value: this.data[this.index--], done: false };
  }
}
var a = new iterator();
for (var i of a) {
  console.log(i);
}
for (var i of a) {
  console.log(i);
}

猜你喜欢

转载自blog.csdn.net/weixin_39181833/article/details/81045655