对象实现`for of`,`Object.keys(Object(this))`这里面的`this`是什么?

作者站长头像
站长
· 阅读数 10

Object.keys(Object(this))这里面的this是什么?为什么value值输出为undefined对象实现`for of`,`Object.keys(Object(this))`这里面的`this`是什么?

    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个回答
avatar
test
2024-06-26

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

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