使用for...of遍历object

25 阅读1分钟

直接遍历

const obj = {
  key: "1",
  value: "2",
};

for (const iterator of obj) {
  console.log(iterator);
}

//Uncaught TypeError: obj is not iterable

Symbol.iterator

function objectIterator() {
  const keys = Object.keys(this);
  let index = 0;
  return {
    next: () => {
      const done = index >= keys.length;
      const value = done ? undefined : this[keys[index]];
      index++;
      return {
        done,
        value,
      };
    },
  };
}

Object.prototype[Symbol.iterator] = objectIterator;

const obj = {
  key: "1",
  value: "2",
};

for (const iterator of obj) {
  console.log(iterator);
}
//输出
//1
//2