深入浅出ES6的迭代器

深入浅出ES6的迭代器

迭代器是ES2015中新增的规范,与之相关的for…of也是ES2015新增的。

本文来深入研究一下迭代器是什么,以及迭代器能够干什么?

或许你对for … of的执行还不了解,比如什么情况下可以使用for … of去遍历对象,什么情况下会报错等等,这篇文章应该能帮到你。

迭代器协议

for … of只能迭代满足【迭代器协议】的对象

可迭代对象的必须存在[Symbol.iterator]方法,该方法一个无参函数,返回迭代器协议的对象。

迭代器对象包含一个next()函数,该函数返回值有两种:

  • 如果迭代未结束,返回如下return { value: ‘item’, // item是本次迭代值,可以为任意对象 done: false }
  • 如果迭代已结束,返回如下return { done: true }

下面是未提供迭代器的示例。

下面是提供迭代器的示例。

通过给obj提供迭代器方法让obj也可以使用for…of遍历。

直接去理解迭代器概念比较困难,用一个简单的例子去简化理解是一件很容易的事情。

其他可迭代对象

String,Array,Map,Set,TypedArray是所有内置的可迭代对象,他们的原型对象都有一个[Symbol.iterator]方法。

下面是两种方法迭代String对象的示例。

结尾

迭代器协议虽然一般用的比较少,但是了解其原理是非常有必要的,这样才可以才需要的实现定义自己的迭代器来遍历对象。

未经允许不得转载:一点博客-青梅煮码-共享博客 » 深入浅出ES6的迭代器
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏