Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复javascript中的“this.property在window.onload上不可编辑”_Javascript_Oop_This_Object Literal - Fatal编程技术网

如何修复javascript中的“this.property在window.onload上不可编辑”

如何修复javascript中的“this.property在window.onload上不可编辑”,javascript,oop,this,object-literal,Javascript,Oop,This,Object Literal,我使用var关键字在javascript中创建了一个对象文本,并分配了未定义的属性和方法。在window.onload中,我首先为属性赋值,然后运行方法,但在运行时它们仍然没有定义 window.onload = () => { obj.prop = ["a", "b"]; obj.run(); }; var obj = { prop: undefined, run: () => { console.log(this.prop);

我使用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


由于使用了箭头函数,此函数指向窗口。你不能像在箭头函数中那样使用它

尝试用function关键字编写run函数

函数绑定示例:

 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);
            }
        },
    };