Iterator 接口与 Generator 函数

Symbol.iterator方法的最简单实现,还是使用下一章要介绍的 Generator 函数。

  1. let myIterable = {
  2. [Symbol.iterator]: function* () {
  3. yield 1;
  4. yield 2;
  5. yield 3;
  6. }
  7. }
  8. [...myIterable] // [1, 2, 3]
  9. // 或者采用下面的简洁写法
  10. let obj = {
  11. * [Symbol.iterator]() {
  12. yield 'hello';
  13. yield 'world';
  14. }
  15. };
  16. for (let x of obj) {
  17. console.log(x);
  18. }
  19. // "hello"
  20. // "world"

上面代码中,Symbol.iterator方法几乎不用部署任何代码,只要用 yield 命令给出每一步的返回值即可。