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();

  }
相关推荐
朝阳58130 分钟前
rust 交叉编译指南
开发语言·后端·rust
冴羽39 分钟前
请愿书:Node.js 核心代码不应该包含 AI 代码!
前端·javascript·node.js
mmmmm1234243 分钟前
深入 DOM 查询底层:HTMLCollection 动态原理与 querySelectorAll 静态快照解析
前端·javascript
淸湫1 小时前
前端JavaScript:数据类型、实例对象 、内置对象、构造函数之间的关系
javascript
量子炒饭大师1 小时前
【C++ 进阶】Cyber霓虹掩体下的代码拟态——【面向对象编程 之 多态】一文带你搞懂C++面向对象编程中的三要素之一————多态!
开发语言·c++·多态
别看我只是一直狼1 小时前
从观察者模式到 RxJS:让复杂的异步逻辑变得优雅又舒服
javascript
|晴 天|2 小时前
我如何用Vue 3打造一个现代化个人博客系统(性能提升52%)
前端·javascript·vue.js
风止何安啊2 小时前
网页都知道要双向握手才加载!从 URL 到页面渲染,单向喜欢连 DNS 都解析不通
前端·javascript·面试
xiaoshuaishuai82 小时前
C# 实现百度搜索算法逆向
开发语言·windows·c#·dubbo
GISer_Jing2 小时前
LangChain.js + LangGraph.js 前端AI开发实战指南
前端·javascript·langchain