它的定义:
迭代器是一个对象,它定义一个序列,并在终止时可能返回一个返回值。任何数据部署了iterato接口,就可以完成遍历操作。
-
es6创建了一个新的遍历方for...of,主要就是提供接口消费的。
-
原生具备for...of遍历的有(也就是说有interato接口)
-
工作原理
- 1.创建一个指针对象,指向当前的数据结构的起始位置
- 2.第一次调用对象的next方法,指向数据结构的第一个成员。
- 3.不断的调用next方法,指针不断向后移动,直到指向最后一个成员。
- 4.每一次调用,都返回一个value和done属性的对象
使用for...of
const arr = ['张三', '李四', '王五']
// 使用for...of
for (let v of arr) {
console.log(v);
}
console.log(arr);
打印数据的原型中可以看到数组带有一个私有的方法
// 查看这个,注意后面的要用中括号,因为数据是Symbol定义一种方法,还需要用()
let iterator = arr[Symbol.iterator]()
console.log(iterator);
在这里我们就可以看到上面提的工作原理的第二点; 当我们使用next方法就可以指向数组第一项。
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());