我假设有一些容易让我在这里俯瞰的东西。 但基本上,我想做的只是简单..我想代码会更好解释,在这里:
tobj = (an Array containing objects.)
for(i = 0; i < tobj.length; i++) {
tobj[i].func = function() {
trace(i);
}
}
基本上,我理解这里发生了什么..我作为全局变量发生变化,所以如果我执行该函数,它将检索i的最后一个值,而不管它在分配时是什么。基本上我试图弄清楚这是用什么方法将i转换为全局,转换为本地,这样当我在对象上执行函数时,它将输出变量,因为它被赋值。
希望这是可以理解和直截了当的。提前谢谢。
答案 0 :(得分:1)
如果在函数声明的右括号后添加括号,它将运行函数:
var tobj = [new Object(),new Object(), new Object()];
for(var i = 0; i < tobj.length; i++) {
tobj[i].func = function() {
trace(i);
}() // < ------
这将追踪:“0”,“1”,“2”
答案 1 :(得分:0)
简单解决方案......可能还有另一种方式,但这对我有用。离开它只是几分钟。
tobj = (an Array containing objects.)
for(i = 0; i < tobj.length; i++) {
tobj[i].func = function() {
assigner(i);
}
}
function assigner(var) {
trace(var);
}