【前端攻城狮之ES6基础】01迭代器原理及自定义迭代器遍历对象

迭代器的原理:

  • 调用Symbol.iterator接口,返回一个指针对象,这个指针对象指向数组起始位置
  • 第一次调用next,指针指向数组的第一个元素
  • 调用对象中的next函数,指针后移,指向下一个元素,直到指向最后一个元素
  • 每次调用next会返回一个包含value和done属性的对象,done用来表示遍历的状态是否结束

在这里插入图片描述
Symbol.iterator其实就是迭代器接口,调用Symbol.iterator接口,就会返回一个新的指针,指向数组的初始位置,使用这个指针来实现数组数据的遍历
迭代器接口
使用迭代器遍历一个对象(for of遍历)

  const classroom={
            name:'计算机2班',
            students:[
                'xiaoming',
                'xiaohong',
                'xiaozhang',
                'xiaowu',
                'rongrong'
            ],
            [Symbol.iterator]:function(){
                let index=0
                const _this=this
                return{
                    next:function(){
                        if(index<_this.students.length){
                            const result={
                                value:_this.students[index],done:false
                             }
                             index++
                             return result
                        }
                        else{
                            return {value:undefined,done:true}
                        }  
                    }
                }
            }
        }
        for( e of classroom){
            console.log(e)
        }
        //迭代器的原理,调用Symbol.iterator接口,返回一个新的指针,指向数组的初始位置
        //调用指针中的next方法,指向数组的第一个元素
        //依次调用next方法,指针一直往后遍历,直到遍历完所有元素
        //嗲用一次next就会返回一个包含value和done属性的对象

遍历成功
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值