初步认识ECMASvript6——Interator
1、概念
js的数据结构:数组 对像 Map Set(后面这两中是ES6的)
Iterator又称为遍历器就是一种机制,为各种不用的数据结构提供统一的访问机制,任何数据结构,只要部署了Interator,就可以完成遍历操作;
作用:
1为各个数据结构提供统一的简便的访问接口;2使得数据结构的成员能够按照某种次序排序;3可以使用一种新的遍历命令for..of
iterator的遍历过程是:
创建一个指针对像,指向当前数据结构的起始位置;第一次调用指针对象的的next方法,可以将指针指向数据结构的第一个成员;第二次调用指针对象的next方法,可以将指针指向数据结构的第二个成员。以此类推
{ var itertaor = makeIterator(['a', 'b']); console.log(itertaor.next());//结果是Object {value: "a", done: false} value表示值是多少 done表示是否循环完成 如果完成了 Object {value: undefined, done: true} function makeIterator(array) {//定义一个函数 遍历器生成函数 返回一个遍历器对象 var nextIndex = 0; return { next: function() { return nextIndex < array.length ? {value: array[nextIndex++], done: false} : {value: undefined, done: true}; } }; } }
2、for...of
在ES6中有些数据结构具有原生的Iterator接口(数组),不用任何操作就可以用for of ;有些就不行(对象);因为:这些数据结构原生部署了Symbol.iterator
当使用for of的循环遍历数据结构的时候,该循环会自动的去寻找iterator接口;
有三类数据结构具有iterator接口:数组 某些类似与数组的对象 以及set和map结构