es6遍历器

首先了解一下iterator遍历器

var a = makeIterator([1,2,3])
a.next()  // {value: 1, done: false}
a.next() // {value: 2, done: false}
a.next() // {value: 3, done: false}
a.next() // {value: undefined, done: true}
function makeIterator(arr) {
  var index = 0
  return {
    next: function() {
      var item = {
        value: arr[index], done: arr.length === index+1 ? true : false
      }
      index++
      return item
    }
  }
}

上述是个类似遍历器,但不真是个遍历器,遍历器是可以用for...of 进行遍历,有Symbol.iterator属性作为key,这个key指向遍历器生成函数,有这个属性才被认为是可遍历的

var obj = {
  [Symbol.iterator]: function() { // 遍历器生成函数
    return {
      next: function() {
        return {value:..., done:false}
      }   
    }
  }
}

此时obj内置了一个遍历器,可以for...of进行遍历,原生支持内置了遍历器的数据类型有Array,Map,Set,String,函数参数arguments, nodeList...

遍历器使用场景,
Array.from
[...arr]
var [a, b] = arr 结构赋值
yield

简述yield
遍历器生成函数结构为

function () {
  return {
    next: function() {
      return {value: xxx, done:false}
    }
  }
}

用generator来写就是

function* () {
  yield 1
  yield 2
  yield 3
}

这个函数就是遍历器生成函数
将遍历器生成函数赋值给对象的[Symbol.iterator],就可以用for-of进行对象属性的遍历

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Iterator(遍历器)的概念 JavaScript原有的表示“集合”的数据结构,主要是数组(Array)和对象...
    呼呼哥阅读 9,897评论 0 2
  • 介绍 遍历器Iterator是一种接口,为各种不同的数据结构提供统一的访问机制,即for...of循环。任何数据结...
    tiancai啊呆阅读 3,733评论 0 0
  • Iterator(遍历器)的概念 JavaScript原有的表示“集合”的数据结构,主要是数组和对象,ES6又添加...
    oWSQo阅读 3,728评论 0 1
  • 简介 基本概念 Generator函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同。Genera...
    oWSQo阅读 3,443评论 0 2
  • 简介 基本概念 Generator函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同。本章详细介绍...
    呼呼哥阅读 4,699评论 0 4