默认Iterator接口

Iterator接口的目的是  为所有的数据结构提供统一的访问机制(for   of   循环)

数据结构只要部署了Iterator接口,就认为这种数据结构为“可遍历”的

一个数据结构只要具有Symbol.iterator属性,就认为是“可遍历”的。调用Symbol.iterator方法,就会得到当前数据结构默认的遍历器生成函数

const obj = {
                [Symbol.iterator]:function(){          //Symbol.iterator 要放在【】当中
                    return {
                        next:function(){
                            return {
                                value:1,
                                done:true
                            }
                        }
                    }
                }
            }

原生具备Iterator接口的数据结构(只要使用的时候调用一下就好):

  • Array
  • Map
  • Set
  • String
  • TypedArray
  • 函数的arguments对象
  • NodeList对象 

对象是没有原生的Iterator接口的 ,因此需要部署Symbol.iterator属性 ,使数据结构具有遍历器接口

(对象没有默认部署Iterator接口,是因为对象属性对的遍历先后顺序是不确定的,需要开发者手动遍历)

let arr = ['a','b','c']; 
let iter = arr[Symbol.iterator]();     调用Symbol.iterator属性
iter.next()       //{value:'a',done:false}
iter.next()       //{value:'b',done:false}
iter.next()       //{value:'c',done:false}
iter.next()       //{value:undefined,done:true}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值