ES6迭代器

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}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值