数据汇合【Array,Object,Map,Set】的对立遍历数据结构机制

Iterator 遍历过程

  1. 创建对象指针,指向起始地位
  2. 第一次调用next,拜访第一个对象
  3. 一直调用next办法,直至终止
  4. { value: undefined, done: true }
var it = makeIterator(['a', 'b']);function makeIterator(array) {  var index = 0;  return {    next: function() {      return index < array.length ? {        value: array[index++],        done: false      }: {        value: void 0,        done: true      }    }  }}

object自身不能被遍历,
ES6规定实现Symbol.iterator 能够反对遍历

var obj = {  name: "ranck",  massgage: "hahah",  level: "t3"}for(let value of obj) {  console.log(value)  // Uncaught TypeError: obj is not iterable}obj[Symbol.iterator] = function () {  // 这样不报错,然而不失效    return {      next: function () {        return {          value: 1,          done: false        };      }    }}obj[Symbol.iterator]  = function () {  const attrs = Object.getOwnPropertyNames(this)  let index = 0  return {    next: () => {      return index < attrs.length ? {        value: this[attrs[index++]],        done: false      }: {        value: void 0,        done: true      }    }  }}