ES6复习-iterator

2020-04-25  本文已影响0人  黄同学2019

Iterator 概念:iterator是一种接口机制,为各种不同的数据结构提供统一的访问机制

作用

工作原理

{
  value: 当前成员的值,
  done: 布尔值
}

自己实现一个 iterator

看代码:


 /**
  * 自己实现一个 迭代器
  *
  * @param {*} source
  * @returns
  */
 function myIterator(source) {
   let nextIndex = 0
   return {
     next: function() {
       return nextIndex < source.length ? {
          value: source[nextIndex++],
          done: false,
        } 
        : {
          value: undefined,
          done: true,
        }
     }
   }
 }

 // test iterator

 const arr = [1,2,3, {name: 'Tom', age: 18}, 'hello, tom']
 const testIteratorObj = myIterator(arr)
 console.log(testIteratorObj.next())
 console.log(testIteratorObj.next())
 console.log(testIteratorObj.next())
 console.log(testIteratorObj.next())
 console.log(testIteratorObj.next())
 console.log(testIteratorObj.next())

// 结果:
// { value: 1, done: false }
// { value: 2, done: false }
// { value: 3, done: false }
// { value: { name: 'Tom', age: 18 }, done: false }
// { value: 'hello, tom', done: false }
// { value: undefined, done: true }

拓展

以下类型数据具备 iterator 接口——可以用 for...of 遍历

注意: 没有 Object,对象没有 iterator 接口

这里,说明下 arguments 的用法,看代码:

// 不用定义参数,使用 arguments 获取到
function fun() {
  for (let i in arguments) {
    console.log(arguments[i])
  }
}

fun(1, 'b', 3, {name: 'Tom'}, false)
// 结果
// 1
// b
// 3
// { name: 'Tom' }
// false

更多学习资料,参考:

上一篇 下一篇

猜你喜欢

热点阅读