ECMAScript 6 Iterator与for...of循环.pdf

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ECMAScript 6 Iterator和for...of循环 1. Iterator (遍历器)的概念 2. 数据结构的默认Iterator接⼜ 3. 调⽤Iterator接⼜的场合 4 . 字符串的Iterator接⼜ 5. Iterator接⼜与Generator 函数 6. 遍历器对象的return() ,throw() 7 . for ...of循环 Iterator (遍历器)的概念 JavaScript原 的表⽰“集合”的数据结构,主要是数组 (rray )和对象 (Object ), ES6又添加了Map和Set 。这样就 了四种数据集合,⽤户还可以组合使⽤它们,定义 ⾃⼰的数据结构,⽐如数组的成员是Map ,Map 的成员是对象。这样就需要⼀种统⼀ 的接⼜机制,来处理所 不同的数据结构。 遍历器 (Iterator )就是这样⼀种机制。它是⼀种接⼜,为各种不同的数据结构提供统 ⼀的访问机制。任何数据结构只要部署Iterator接⼜,就可以完成遍历操作 (即依次处 理该数据结构的所 成员)。 Iterator 的作⽤ 三个:⼀是为各种数据结构,提供⼀个统⼀的、简便的访问接⼜;⼆ 是使得数据结构的成员能够按某种次序排列;三是ES6创造了⼀种新的遍历命令 for...of循环,Iterator接⼜主要供for...of消费。 Iterator 的遍历过程是这样的。 (1)创建⼀个指针对象,指向当前数据结构的起始位置。也就是说,遍历器对象本 质上,就是⼀个指针对象。 (2 )第⼀次调⽤指针对象的next⽅法,可以将指针指向数据结构的第⼀个成员。 (3 )第⼆次调⽤指针对象的next⽅法,指针就指向数据结构的第⼆个成员。 (4 )不断调⽤指针对象的next⽅法,直到它指向数据结构的结束位置。 每⼀次调⽤next⽅法,都会返回数据结构的当前成员的信息。具体来说,就是返回 ⼀个包含value和done两个属性的对象。其中,value属性是当前成员的值,done 属性是⼀个布尔值,表⽰遍历是否结束。 下⾯是⼀个模拟next⽅法返回值的例⼦。 var it = makeIterator([a, b]); it.next() // { value: a, done: fal e } it.next() // { value: b, done: fal e } it.next() // { value: undefined, done: true } function makeIterator(array) { var nextIndex = 0; return { next: function() { return nextIndex array .length ? {value: array[nextIndex++], done: fal e} : {value: undefined, done: true}; } }; } 上⾯代码定义了⼀个makeIterator函数,它是⼀个遍历器⽣成函数,作⽤就是返回 ⼀个遍历器对象。对数组[a, b]执⾏这个函数,就会返回该数组的遍历器对象 (即指针对象)it。 指针对象的next⽅法,⽤来移动指针。开始时,指针指向数组的开始位置。然后, 每次调⽤next⽅法,指针就会指向数组的下⼀个成员。第⼀次调⽤,指向a;第⼆次 调⽤,指向b。 next⽅法返回⼀个对象,表⽰当前数据成员的信息。这个对象具 value和done两 个属性,value属性返回当前位置的成员,done属性是⼀个布尔值,表⽰遍历是否 结束,即是否还 必要再⼀次调⽤next⽅法。 总之,调⽤指针对象的next⽅法,就可以遍历事先给定的数据结构。 对于遍历器对象来说,done: fal e和value: undefined属性都是可以省略的, 因此上⾯的makeIterator函数可以简写成下⾯的形式。 function makeIterator(array) { var nextIndex = 0; return { next: function() { return nextIndex array .length ? {value: array[nextIndex++]} : {done: true}; } }; }

文档评论(0)

0520 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档