Symbol的Symbol.iterator

Symbol.iterator介绍

MDN上定义**Symbol.iterator **为每一个对象定义了默认的迭代器。该迭代器可以被 `[for...of](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/for...of)` 循环使用。

个人理解就是一个迭代器一个可遍历的方法,JS中数组中的数组成员都是有顺序的,例如下标,而对象就就没有。使用iterator接口就可以实现

  • 1
 let obj = {
      data: ["1", "2", "3"],
      [Symbol.iterator]() {
        const self = this;
        let index = 0;
        return {
          next() {
            if (index < self.data.length) {
              return {
                value: self.data[index++],
                done: false,
              };
            } else {
              return { value: undefined, done: true };
            }
          },
        };
      },
    };
    for (let i of obj) {
      console.log(i); // 1 2 3
    }
  • 2
  let obj = {
      name: "Cola",
      age: 19,
    };

    obj[Symbol.iterator] = function* fun() {
      yield 1;
      yield 2;
      yield 3;
    };
    console.log(obj);

    for (let i of obj) {
      console.log(i); // 1 2 3
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容