为不同的数据结构提供统一的接口,1)任何数据接口只要部署了Iterator就能遍历,2)而且数据结构能按照某种遍历,3)并且es6有个新的遍历for...of循环

1)为对象添加iterator接口

{
  let obj = {
    data: ['js', 'html', 'css', 'vue'],
    [Symbol.iterator] () {
      let self = this
      let data = self.data
      let index = 0
      let len = data.length
      return {
        next () {
          if (index < len) {
            return {
              value: data[index++],
              done: false
            }
          } else {
            return {
              value: undefined,
              done: true
            }
          }
        }
      }
    }
  }

  for (let k of obj) {
    console.log(k)
  }
}

自定义数据结构遍历 2个关键点[Symbol.iterator] (){}还有一点是return值next()必须是value和done

 

2)原生具有的iterator接口的数据接口

Array  Map Set String TypedArray 函数的argument的对象

posted on 2018-11-27 23:07  苏荷酒吧  阅读(88)  评论(0)    收藏  举报