首页 > 解决方案 > 如何在javascript中修复“this.property is not iterable at window.onload”

问题描述

我使用 var 关键字在 javascript 中创建了一个对象文字,并分配了未定义的属性和方法。在 window.onload 我首先将值分配给属性然后运行方法,但在运行时它们仍然未定义。

window.onload = () => {
    obj.prop = ["a", "b"];
    obj.run();
};

var obj = {
    prop: undefined,
    run: () => {
        console.log(this.prop);
        for (let val of this.prop) {
            console.log(val);
        }
    },

};

预期的输出应该是:

"

["a","b"]

"a" 

"b"

"

但它显示以下内容:


undefined

TypeError : this.prop is not iterable at Object.run(?,the real object name is bloom but it errors "at Object.run") at window.onload

标签: javascriptoopthisobject-literal

解决方案


由于使用了箭头函数,“this”指向Window。你不能像你一样在箭头函数中使用它。

尝试使用function关键字编写运行函数。

函数绑定示例:

 window.onload = () => {
        obj.prop = ["a", "b"];
        obj.run();
    };

    var obj = {
        prop: undefined,
        run(){
            console.log(this)
            console.log(this.prop);
            for (let val of this.prop) {
                console.log(val);
            }
        },
    };

推荐阅读