javascript - 如何在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
解决方案
由于使用了箭头函数,“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);
}
},
};
推荐阅读
- ios - VNRectangleObservation 角在 iPhone 上的 x 轴上压缩
- json - 有没有办法在 Angular6 路由期间延迟加载静态 json?
- scala - 在 Scala 中使用带有类型参数化函数的 jmock
- javascript - 显示一个加载页面时的内容,刷新时出现
- sql-server - 使用多个/一个下拉列表中的值从数据库中检索数据
- javascript - 使用 IIS 服务器上的 ASP.NET 托管来自 SignalR Hub 的 403(禁止)响应
- dart - 如何在 Dart 中增加字体大小
- stylecop - 向 StyleCop 添加自定义命名规则
- python - 与 scipy integration.tplquad 不同的结果
- security - 基于路径的角色安全性