资讯专栏INFORMATION COLUMN

es6学习笔记-自己动手实现迭代器

iliyaku / 2186人阅读

摘要:如果你了解过,那么你应该对比较熟悉了,但是你知道背后的原理是什么么吗首先调用集合的方法,紧接着返回一个新的迭代器对象。迭代器对象可以是任意具有方法的对象循环将重复调用这个方法,每次循环调用一次。

如果你了解过ES6,那么你应该对for...of比较熟悉了,但是你知道for...of背后的原理是什么么吗?
for...of首先调用集合的[Symbol.Iterator]()方法,紧接着返回一个新的迭代器对象。迭代器对象可以是任意具有.next()方法的对象;for ...of循环将重复调用这个方法,每次循环调用一次。举个例子,下面是最简单的迭代器:

 var zerosForeverIterator={
      [Symbol.iterator]:function(){
        return this;
      },
      next:function(){
        return {done:false,value:0};
      }
   }

我们可以写一个简单的for...of循环然后按照下面的方法调用重写被迭代的对象:
首先是for...of循环:

for(VAR of ITERABLE){
//一些语句
}

然后是一个使用以下方法和少许临时变量实现的与之前大致相当的示例:

var $iterator=ITERABLE[Symbol.iterator()];
 var $result=$iterator.next();
 while(!$result.done){
  vAR=$result.value;
  //一些语句
  $result=$iterator.next();
 }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/81063.html

相关文章

  • 学习ES6笔记──工作中常用到的ES6语法

    摘要:但是有了尾调用优化之后,递归函数的性能有了提升。常被用来检查对象中是否存在某个键名,集合常被用来获取已存的信息。循环解构对象本身不支持迭代,但是我们可以自己添加一个生成器,返回一个,的迭代器,然后使用循环解构和。 一、let和const 在JavaScript中咱们以前主要用关键var来定义变量,ES6之后,新增了定义变量的两个关键字,分别是let和const。对于变量来说,在ES5中...

    curried 评论0 收藏0
  • Java进阶之路

    摘要:探索专为而设计的将探讨进行了何种改进,以及这些改进背后的原因。关于最友好的文章进阶前言之前就写过一篇关于最友好的文章反响很不错,由于那篇文章的定位就是简单友好,因此尽可能的摒弃复杂的概念,只抓住关键的东西来讲,以保证大家都能看懂。 周月切换日历 一个可以进行周月切换的日历,左右滑动的切换月份,上下滑动可以进行周,月不同的视图切换,可以进行事件的标记,以及节假日的显示,功能丰富 Andr...

    sushi 评论0 收藏0
  • javascript设计模式学习笔记迭代模式

    摘要:迭代器模式顺序访问一个对象的对象的内部可分为内部迭代器和外部迭代器内部迭代器就是常见的或者外部迭代器实现了简单实现 迭代器模式 顺序访问一个对象的 对象的内部 可分为内部迭代器 和 外部迭代器 内部迭代器 就是常见的 forEach(), 或者 $.each() function forEach(arr, callback) { var i = 0, len...

    Jason_Geng 评论0 收藏0
  • 《深入理解ES6笔记——迭代(Iterator)和生成(Generator)(8)

    摘要:迭代器是一种特殊对象,每一个迭代器对象都有一个,该方法返回一个对象,包括和属性。默认情况下定义的对象是不可迭代的,但是可以通过创建迭代器。在迭代器中抛出错误不再执行生成器返回语句生成器中添加表示退出操作。迭代器是一个对象。 迭代器(Iterator) ES5实现迭代器 迭代器是什么?遇到这种新的概念,莫慌张。 迭代器是一种特殊对象,每一个迭代器对象都有一个next(),该方法返回一个对...

    AndroidTraveler 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<