文章目录
一、Iterator 遍历器
进行指针移位,遍历数据
js原有的表示“集合”的数据结构,主要是数组(Array)和对象(Object),ES6 又添加了Map和Set。
Iterator是一种机制。它是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署 Iterator 接口,就可以完成遍历操作(即依次处理该数据结构的所有成员
1.模拟遍历器接口实现
//自己模拟遍历器接口实现
function makeInterator(array){
let startIndex=0;
return{
next: function () {
return startIndex<array.length?{
value:array[startIndex++],done:false}:
{
value:undefined,done:true};
}
}
}
let inter=makeInterator([1,2,3,4]);
console.log(inter.next());
console.log(inter.next());
console.log(inter.next());
console.log(inter.next());
console.log(inter.next());
2.遍历器接口 Symbol.iterator
Iterator 接口的目的,就是为所有数据结构,提供了一种统一的访问机制,即for…of循环。
当使用for…of循环遍历某种数据结构时,该循环会自动去寻找 Iterator 接口
默认的 Iterator 接口部署在数据结构的Symbol.iterator属性,或者说,一个数据结构只要具有Symbol.iterator属性,就可以认为是“可遍历的”
给object部署Symbol.iterator
object不存在遍历器接口,需要部署
let obj={
[Symbol.iterator]:function(){
return{
next: function () {
return{
value:1,done:false};
}
}