Iterator 和 for...of 循环
2019-12-05 09:57:05 0 举报
AI智能生成
ES6 - 思维导图
作者其他创作
大纲/内容
概述
遍历器(Iterator)就是这样一种机制。
它是一种接口,为各种不同的数据结构提供统一的访问机制
它是一种接口,为各种不同的数据结构提供统一的访问机制
作用
1、一是为各种数据结构,提供一个统一的、简便的访问接口
2、是使得数据结构的成员能够按某种次序排列
3、ES6 创造了一种新的遍历命令for...of循环,Iterator 接口主要供for...of消费
遍历过程
通过不断调用next,指针指向下一个成员
大致格式
目标对象[Symbol.iterator]属性的函数中
返回一个包含next方法的对象
返回一个包含next方法的对象
原生具备Iterator接口
Array
Map
Set
String
TypedArray
函数的 arguments 对象
NodeList 对象
类数组对象可以部署Iterator接口
调用 Iterator 接口的场合
1)解构赋值
let [first, ...rest] = set;
2) 扩展运算符
[...str]
3)yield*
yield* [2,3,4];
其他场合
for...of
Array.from()
Map(), Set(), WeakMap(), WeakSet()
Promise.all()
Promise.race()
Array.from()
Map(), Set(), WeakMap(), WeakSet()
Promise.all()
Promise.race()
字符串也具有的 Iterator 接口
Iterator 接口与 Generator 函数
Symbol.iterator方法的最简单实现
let myIterable = {
[Symbol.iterator]: function* () {
yield 1;
yield 2;
yield 3;
}
}
[...myIterable] // [1, 2, 3]
let myIterable = {
[Symbol.iterator]: function* () {
yield 1;
yield 2;
yield 3;
}
}
[...myIterable] // [1, 2, 3]
遍历器对象的 return(),throw()
next方法是必须有的
return() 和 throw() 是可选的
当遍历存在提前退出break或着报错导致退出时候
会进入设置好的return()方法中
return() 和 throw() 是可选的
当遍历存在提前退出break或着报错导致退出时候
会进入设置好的return()方法中
0 条评论
下一页