ES6迭代器 : Iterator
1:Iterator是什么?
·创建一个指针对象,指向数据结构的起始位置;
·第一次调用next(),指针指向数据结构的第一个成员,接下来每调用一次next(),指正继续指向数据结构的下一位成员,直到指向最后一个成员;
·每次调用next()后,返回的是下面的一个对象↓
{
vlaue:当前成员的值,
done:当前结构是否遍历结束(也可以理解为是否已经超出最后一个成员,没有超出:false,超出:true)
}
2:Iterator有什么用?
·给数据结构提供一个统一的,简单的访问接口;
·数据结构成员可以按照某种次序排列;
·主要给es6提供的for...of遍历命令使用
3:默认支持Iterator的数据结构(支持for…of遍历)
·Array
·String
·Set容器
·Map容器
·函数arguments对象
·标签 NodeList对象
3:手写一个Iterator
let obj = {
name:'睿睿',
age:18,
like:['美食','旅游','驾驶'],
[Symbol.iterator](){
let key = 0;
return {
next:()=>{
return {
value:this.like[key++],
done:key-1 >= this.like.length?true:false
}
}
}
}
}
console.log([...obj]) //['美食', '旅游', '驾驶']
let objI = obj[Symbol.iterator]() // 调用
console.log(objI.next()) //{value: '美食', done: false}
console.log(objI.next()) //{value: '旅游', done: false}
console.log(objI.next()) //{value: '驾驶', done: false}
console.log(objI.next()) //{value: undefined, done: true}
console.log(objI.next()) //{value: undefined, done: true}