ES6新特性---可迭代接口、迭代器模式、生成器、生成器应用

可迭代接口

随着ES中有结构的数据类型越来越多,提供了一种能被for…of…遍历数据结构的标准。
实现可迭代接口Iterable接口就是for…of…的前提。只要实现了该接口,就能被for…of…遍历访问。
所以内部必须要去挂载一个iterator方法,方法需要返回一个带有next()方法的对象,不断调用这个方法就能实现遍历。
在这里插入图片描述

实现可迭代接口

在这里插入图片描述
以上述代码为例, 一共包含了三层对象,第一层就是选中的部分,我们自定义的这个对象,这个对象实现了可迭代接口(iterable),这个接口的约定就是内部必须要有一个用于返回迭代器的iterator方法。
在这里插入图片描述
第二层为iterator返回的这个对象,它实现了迭代器接口(iterator),这个接口约定就是内部必须有一个用于迭代的next方法。
在这里插入图片描述
最后一层就是next方法返回的对象,这个对象实现了迭代结果接口(iterationResult),这个接口约定就是在对象内部必须有一个value属性表示当前迭代到的值,还有一个done用来表示迭代是否以及介绍。

在此基础之上就能使用for…of…对该对象进行遍历。

迭代器模式

迭代器模式就是对外提供统一接口,让开发者不用再担心内部的数据结构就能进行遍历。
在这里插入图片描述

生成器

在ES2015中还新增了一个生成器函数(Generator),新特性的作用是为了避免异步编程中回调嵌套过深,提供更好的异步编程解决方案。
生成器函数的定义就是在函数名前加一个*,并且生成器函数的运用必须要结合yield来使用。
在这里插入图片描述
由此可知,生成器函数也实现了可迭代接口,在调用一次next方法就可以打印接下来的语句。

总结:生成器函数会自动返回一个生成器对象,调用这个对象的next方法,才会让这个函数的函数体执行,执行过程中一旦遇到了yield关键词,函数的执行就会被暂停,yield的值将会作为next的结果返回。继续调用next,函数就会从暂停的位置继续开始执行。

生成器应用

1.发号器
在这里插入图片描述
2.也可以用来改进我们之前的迭代器模式,因为生成器对象内部就已经实现了可迭代接口。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值