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
    }
  }
}

上述是個(gè)類似遍歷器,但不真是個(gè)遍歷器,遍歷器是可以用for...of 進(jìn)行遍歷,有Symbol.iterator屬性作為key,這個(gè)key指向遍歷器生成函數(shù),有這個(gè)屬性才被認(rèn)為是可遍歷的

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

此時(shí)obj內(nèi)置了一個(gè)遍歷器,可以for...of進(jìn)行遍歷,原生支持內(nèi)置了遍歷器的數(shù)據(jù)類型有Array,Map,Set,String,函數(shù)參數(shù)arguments, nodeList...

遍歷器使用場景,
Array.from
[...arr]
var [a, b] = arr 結(jié)構(gòu)賦值
yield

簡述yield
遍歷器生成函數(shù)結(jié)構(gòu)為

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

用generator來寫就是

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

這個(gè)函數(shù)就是遍歷器生成函數(shù)
將遍歷器生成函數(shù)賦值給對(duì)象的[Symbol.iterator],就可以用for-of進(jìn)行對(duì)象屬性的遍歷

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Iterator(遍歷器)的概念 JavaScript原有的表示“集合”的數(shù)據(jù)結(jié)構(gòu),主要是數(shù)組(Array)和對(duì)象...
    呼呼哥閱讀 4,541評(píng)論 0 2
  • 介紹 遍歷器Iterator是一種接口,為各種不同的數(shù)據(jù)結(jié)構(gòu)提供統(tǒng)一的訪問機(jī)制,即for...of循環(huán)。任何數(shù)據(jù)結(jié)...
    tiancai啊呆閱讀 671評(píng)論 0 0
  • Iterator(遍歷器)的概念 JavaScript原有的表示“集合”的數(shù)據(jù)結(jié)構(gòu),主要是數(shù)組和對(duì)象,ES6又添加...
    oWSQo閱讀 664評(píng)論 0 1
  • 簡介 基本概念 Generator函數(shù)是ES6提供的一種異步編程解決方案,語法行為與傳統(tǒng)函數(shù)完全不同。Genera...
    oWSQo閱讀 582評(píng)論 0 2
  • 簡介 基本概念 Generator函數(shù)是ES6提供的一種異步編程解決方案,語法行為與傳統(tǒng)函數(shù)完全不同。本章詳細(xì)介紹...
    呼呼哥閱讀 1,136評(píng)論 0 4

友情鏈接更多精彩內(nèi)容