对象不能用for of遍历,arguments对象为啥可以?

刘先生
  • 12

for of不能遍历对象,但是arguments也是对象,为啥又可以用for of遍历呢?
image.png
求大佬指教,有点不解,谢谢

回复
阅读 1.7k
2 个回答

加个 Iterator 就可以了

const it = {
    a: 1,
    b: "1"
};

it[Symbol.iterator] = function* () {
    yield* Object.entries(this);
};

for (const [key, value] of it) {
    console.log(key, "=", value);
}

不过何必呢,不如直接用 Object.entries(it)

Object.entries(it).forEach(([key, value]) => console.log(key, value));

// 或者

for (const [key, value] of Object.entries(it)) {
    console.log(key, value);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏