迭代器是一种接口,为各种不同的数据结构提供统一的访问机制,任何数据结构只要部署iterator接口,就可以完成遍历操作
(iterator接口就是对象里面的一种属性)
1)ES6创造了一种新的遍历命令for....of循环,iterator接口主要供for....of消费
2)原生具备iterator接口的数据(可用for of循环)
原生具备iterator接口的数据有:
Array,Arguments,Set,Map,String,TypeArray,NodeList
for of 和 for in的区别
首先创建一个数组:
const xiyou =['唐僧','孙悟空','猪八戒','沙僧'];
for of遍历数组结果:
for(let v of xiyou){
console.log(v);
}
for in遍历数组结果
for(let k in xiyou){
console.log(k);
}
原理:
1.创建一个指针对象,指向当前数据结构的起始位置
2.第一次调用对象的next方法,指针自动指向数据结构的第一个成员
3.接下来不断调用next方法,指针一直往后移动,直到指向最后一个成员
4.每调用next方法返回一个包含value和done属性的对象
注:需要自定义遍历数据的时候,要想到迭代器(其中自定义遍历数据便是迭代器的作用)