美文网首页
Symbol的Symbol.iterator

Symbol的Symbol.iterator

作者: 废弃的种子 | 来源:发表于2022-02-28 16:37 被阅读0次

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
    }

相关文章

  • Symbol的Symbol.iterator

    Symbol.iterator介绍 个人理解就是一个迭代器一个可遍历的方法,JS中数组中的数组成员都是有顺序的,例...

  • Symbol.iterator

    const obj = {store:['foo','bar','gba'],[Symbol.iterator]:...

  • Symbol.iterator

    es6中有三类结构生来就具有Iterator接口:数组、类数组对象、Map和Set结构。 至于对象没有布置iter...

  • JavaScript的可迭代对象

    1)数组Arrays console.log([][Symbol.iterator]) for(let x of ...

  • Symbol.iterator和for…of

    Symbol.iterator ECMAScript 2015的几个补充,并不是新的内置实现或语法,而是协议。这些...

  • es6学习笔记整理(十四)Iterator迭代器

    Iterator和for...of循环 什么是Iterator接口 在 Symbol.iterator 出现后,J...

  • 自定义可遍历对象 - Struct

    概述 使用: proxy toJSON Symbol.iterator class 实现自定义可遍历对象 Map ...

  • ForOf循环

    定义:调用Iterator接口产生遍历器对象(for-of内部调用数据结构的Symbol.iterator()) ...

  • 迭代器和生成器

    for..of 语句for..of会遍历可迭代的对象,调用对象上的Symbol.iterator方法。 下面是在数...

  • 2020-07-21前端学习

    for of 只最拥有 Symbol.iterator 的数据结构起作用数组new Set类数组字符串.......

网友评论

      本文标题:Symbol的Symbol.iterator

      本文链接:https://www.haomeiwen.com/subject/qdblrrtx.html