使用Symbol.iterator获取ES6类的第一个属性

时间:2016-03-07 21:24:57

标签: javascript ecmascript-6

所以我有一个类似的课程:

class List {
  constructor() {
    this._rows = [];
  }

  add(row) {
    this._rows.push(row);
  }

  [Symbol.iterator]() {
    return this._rows.values();
  }
}

我知道为了获得第一个可以通过

访问它的元素
List._rows[0]

以及

for (var row of List) {
  break;
}

我更好奇,因为我试图将this._rows视为私有,并且我更倾向于没有循环来获取第一个索引。还有其他办法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用next方法获取对象的迭代器并访问值:

let list = new List();
let iterator = list[Symbol.iterator]();
iterator.next().value; // first item
iterator.next().value; // second item

所以获得第一个值的简写是:

list[Symbol.iterator]().next().value;

在实际代码中,不要忘记检查迭代器是否具有下一个值,该值指示迭代器返回的项的done属性。