ES6迭代器(一)

2023-05-22 11:55:27 浏览数 (1)

在ES6(ECMAScript 2015)中,引入了迭代器(Iterator)的概念和相关协议。迭代器是一种对象,用于提供一种统一的方式来访问集合中的元素,使得可以按照特定的顺序逐个地获取集合中的值。通过实现迭代器协议,可以使得对象具备可迭代的能力,并支持使用for...of循环进行遍历。

迭代器协议:

迭代器协议定义了一个标准的接口,包括next()方法和可选的Symbol.iterator方法。

  • next()方法:每次调用next()方法都会返回一个包含valuedone属性的对象。value表示当前迭代位置的值,done表示迭代是否已完成。
  • Symbol.iterator方法:返回迭代器对象自身,使得对象具备可迭代的能力。

示例:

代码语言:javascript复制
// 迭代器协议示例
let iterable = {
  [Symbol.iterator]() {
    let data = [1, 2, 3];
    let index = 0;

    return {
      next() {
        if (index < data.length) {
          return { value: data[index  ], done: false };
        } else {
          return { value: undefined, done: true };
        }
      }
    };
  }
};

for (let item of iterable) {
  console.log(item);
}
// 输出:
//   1
//   2
//   3

在上面的示例中,我们定义了一个可迭代的对象iterable,并实现了Symbol.iterator方法来返回一个迭代器对象。迭代器对象通过next()方法实现对数据的逐个访问,直到遍历完所有元素。通过使用for...of循环,我们可以遍历并输出集合中的每个值。

0 人点赞