对象实现`for of`,`Object.keys(Object(this))`这里面的`this`是什么?
Object.keys(Object(this))
这里面的this
是什么?为什么value
值输出为undefined
?
const obj = {
a: 1,
b: 2,
c: 3
}
Object.prototype[Symbol.iterator] = function value() {
console.log("this-------", this,Object(this));
const keys = Object.keys(Object(this));
let nextIndex = 0;
function next() {
return nextIndex < keys.length ? { value: [keys[nextIndex], obj[keys[nextIndex++]]], done: false } : { value: undefined, done: true };
}
return { next }
}
for (const [key, value] in obj) {
console.log('key----', key);
console.log('value----', value);
}
回复
1个回答

test
2024-06-26
this就是 obj,至于为什么不对 是因为你用的for in 而不是 for of,for...in循环用于遍历对象的可枚举属性。它遍历对象自身及其原型链上的所有可枚举属性,但不会遍历对象的迭代器
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容