0

我假设我在这里忽略了一些简单的事情。但基本上,我想做的只是简单地..我想代码会是一个更好的解释,这里是:

tobj = (an Array containing objects.)

for(i = 0; i < tobj.length; i++) {
   tobj[i].func = function() {
       trace(i);
   }
}

基本上,我明白这里发生了什么.. i 随着全局变量的变化,所以如果我执行该函数,它将检索 i 的最后一个值,而不管它在分配时是什么。基本上我想在这里弄清楚使用什么方法将 i 作为全局转换为本地,这样当我在对象上执行函数时,它会输出分配的变量。

希望它是可以理解的和直截了当的。提前致谢。

4

2 回答 2

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”

于 2013-03-20T10:14:32.757 回答
0

简单的解决方案...可能还有另一种方法,但这对我有用。刚离开它几分钟。

tobj = (an Array containing objects.)

for(i = 0; i < tobj.length; i++) {
   tobj[i].func = function() {
       assigner(i);
   }
}

function assigner(var) {
   trace(var);
}
于 2013-03-20T10:17:14.910 回答