for of不能遍历对象,但是arguments也是对象,为啥又可以用for of遍历呢?
求大佬指教,有点不解,谢谢
加个 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);
}
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
对象实现了
Symbol.iterator
就可以被迭代,这里的 arguments 就实现了参考: