迭代器、可迭代对象、生成器简介

89 阅读1分钟

①迭代器:
1、定义:是用户可在容器对象(container,例如链表或数组)上遍访的对象,设计人员使用此接口无需关心容器对象的内存分配的实现细节;
2、JS 中的迭代器:其本质就是一个对象,符合迭代器协议。
迭代器协议:
a、其对象返回一个 next 函数;
b、调用 next 函数返回一个对象,其对象中包含两个属性:
done (完成),它的值为布尔类型,也就是 true/false,如果这个迭代器没有迭代完成即返回 {done:false},当这个迭代器完成了即返回 {done:true};
value (值),它可以返回 js 中的任何值,TS 中表示可为:value:any 类型;
②可迭代对象:
1、首先就是一个对象,且符合可迭代对象协议 (iterable protocol);
2、可迭代对象协议,实现了 [Symbol.iterator] 为 key 的方法,且这个方法返回了一个迭代器对象;
3、原生可迭代对象 (JS 内置):String/Array/Set/NodeList 类数组对象 / Arguments 类数组对象 / Map;
4、可迭代对象的应用:for of / 展开语法 / 解构语法 /promise.all (iterable)/promise.race (iterable)/Array.from (iterable);
③生成器函数:
1、生成器是 ES6 新增的一种可以对函数控制的方案,能灵活的控制函数的暂停执行,继续执行等;
2、生成器函数和普通函数的不同:
a、定义:普通函数 function 定义,生成器函数 function*,要在后面加 *;
b、生成器函数可以通过 yield 来控制函数的执行;
c、生成器函数返回一个生成器 (generator),生成器是一个特殊的迭代器;
(参考:mp.weixin.qq.com/s/Dw2ME78NU…