Fork me on GitHub

初步认识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结构

posted @ 2017-03-22 11:15  zhang_yx  阅读(207)  评论(0编辑  收藏  举报