js迭代器模式

以前JS原生的集合类型数据结构,只有Array(数组)和Object(对象);

而ES6中,又新增了Map和Set。四种数据结构各自有着自己特别的内部实现,但我们仍期待以同样的一套规则去遍历它们,所以ES6在推出新数据结构的同时也推出了一套统一的接口机制------迭代器(Iterator)。

ES6约定,任何数据结构只要具备Symbol.iterator属性(这个属性就是Iterator的具体实现,它本质上是当前数据结构默认的迭代器生成函数),就可以被遍历------准确地说,是被for...of...循环和迭代器的next方法遍历。 事实上,for...of...的背后正是对next方法的反复调用。

js 复制代码
// 定义一个迭代器对象

const iterator = {

    next() {

      // 返回当前迭代的元素和是否完成迭代的标志

      return { value: 1, done: false };

    }

  };

  // 使用迭代器对象进行迭代

  let result = iterator.next();

  while (!result.done) {

    console.log(result.value);

    result = iterator.next();

  }
相关推荐
martian66543 分钟前
Java开发者指南:深入理解HotStuff新型共识算法
java·开发语言
键盘上的GG小怪兽GG1 小时前
Centos主机检查脚本
开发语言·网络·python
Shi_haoliu1 小时前
各种网址整理-vue,前端,linux,ai前端开发,各种开发能用到的网址和一些有用的博客
linux·前端·javascript·vue.js·nginx·前端框架·pdf
学习是种信仰啊1 小时前
QT文件操作(QT实操学习3)
开发语言·qt·学习
东望1 小时前
从基础用法到源码实现:手写 Promise 的完整指南
javascript·promise
喝奶茶不加糖1 小时前
什么是promise
前端·javascript
牵牛老人1 小时前
C++设计模式-迭代器模式:从基本介绍,内部原理、应用场景、使用方法,常见问题和解决方案进行深度解析
c++·设计模式·迭代器模式
逆袭的小黄鸭1 小时前
理解 JavaScript 的 this:核心概念、常见误区与改变指向的方法
前端·javascript·面试
lemonzoey1 小时前
用Web Worker优化大文件上传——告别页面卡顿!
前端·javascript
卷卷的小趴菜学编程1 小时前
算法篇-------------双指针法
c语言·开发语言·c++·vscode·算法·leetcode·双指针法