如何修复javascript中的“this.property在window.onload上不可编辑”
我使用var关键字在javascript中创建了一个对象文本,并分配了未定义的属性和方法。在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);
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);
}
},
};