【发布时间】:2014-12-01 12:06:13
【问题描述】:
编辑:问题已解决,我之前忘记为 riteg 对象输入输出。
好的,所以我很确定如何描述这个问题(这就是标题不好的原因),但是这个 for 循环:
function(){
var out = 0;
for(var i = 0;i<gameLists.listAllGen.length;i++){
out += window[gameLists.listAllGen[i]].output();
}
return out/10000;
},
根本不起作用。在控制台中,它说:TypeError: window[gameLists.listAllGen[i]].output is not a function
当我用 [0] 替换 [i] 时,它可以工作:
function(){
var out = 0;
for(var i = 0;i<gameLists.listAllGen.length;i++){
out += window[gameLists.listAllGen[0]].output();
}
return out/10000;
},
按预期返回并且没有错误。
如果需要的话,变量:
var gameLists = {
listAllGen:['solarGen','riteg']
}
和
var solarGen = {
name:"Solar Generator",
count:0,
genRate:0.25,
price:410,
output:
function(){
return this.count*this.genRate*10000;
},
【问题讨论】:
-
不,这不是打错字。字符串应该与 window 一起使用,例如 window[solarGen] 返回错误,但 window["solarGen"] 不会。
-
jsfiddle.net/9ad6kbfa 似乎确实有效。也许您以错误的顺序定义数据?
-
我添加了分号,它现在似乎按预期工作(除了烦人的浮点数)。感谢您的帮助!
-
@Doge -
riteg的定义在哪里?
标签: javascript arrays object for-loop