2013-03-20 57 views
0

我假设有一些简单的东西,我在这里忽略。 但基本上,我想要做的就是简单..我猜码会是一个更好的解释,这里有云:AS3(或AS2) - 作为本地内部函数的全局变量

tobj = (an Array containing objects.) 

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

基本上,我明白这里发生。我为全局变量所以如果我执行这个函数,它会检索我的最后一个值,而不管它被分配的时候是什么。基本上我试图找出这里是使用什么方法来将我作为一个全局转换为本地,以便当我在对象上执行该函数时,它将输出它分配的变量。

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

回答

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”

+0

这也适用,绝对比我自己的答案更容易。谢谢 – Stone 2013-03-20 10:20:07

0

简单解决方案......可能有另一种方式,但这对我来说很有用。刚刚走了几分钟。

tobj = (an Array containing objects.) 

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

function assigner(var) { 
    trace(var); 
}