11_迭代器

迭代器

定义:迭代器(iterator)是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据解构只要不是 iterator 接口,就可以完成遍历操作

1. ES6 创造了一种新的遍历命令 for...of 循环,iterator 接口主要供 for...of 消费

2. 原生具备 iterator 接口的数据( 可用 for...of 遍历 )

// Array、Arguments、Set、Map、String、TypedArray、NodeList

3. 工作原理

// 1. 创建一个指针对象,指向当前数据结构的起始位置
// 2. 第一次调用对象的 next 方法,指针自动指向数据结构的第一个成员
// 3. 接下来不断调用 next 方法,指针一直向后移动,直到指向最后一个成员

4. 例子

// 声明一个数据
const xiyou = ['唐僧', '孙悟空', '猪八戒', '沙僧']

// 使用 for...of
for(let v of xiyou) {
    console.log(v) // 打印的是键值,如:唐僧,孙悟空,猪八戒,沙僧
}
// 使用 for...in
for(let v in xiyou) {
    console.log(v) // 打印的是键名,如:0, 1, 2, 3
}

5. 迭代器自定义遍历对象

const obj = {
    name: '小米',
    phoneType: ['小米note', '小米6', '小米9', '小米10', '小米MAX'],
    [Symbol.iterator]() {
        let index = 0
        return {
            next: () => {
                return index < this.phoneType.length ? { value: this.phoneType[index++], done: false} : { value: undefined, done: true}
            }
        }
    }
}
for (const iterator of obj) {
    console.log(iterator)
}
// 小米note
// 小米6
// 小米9
// 小米10
// 小米MAX

你可能感兴趣的:(11_迭代器)