有关ActionScript 2.0中变量范围的快速问题。今天进行了一些测试,并想知道如何通过连接变量字符串来定位函数的局部变量。
例如:
var txt = "Hello World";
function testing(msg) {
var test1 = msg;
trace(this["test"+1]);
}
testing(txt);
我希望跟踪是“Hello World”,而是“undefined”。因此,如果在主时间轴上创建了在函数外部创建的变量,那么创建局部函数变量的位置以及如何访问它们?
答案 0 :(得分:1)
据我所知,你做不到。如果您有test1
,test2
,test3
,...等等,为什么不将其设为名为test
的数组?然后你是test[0]
,test[1]
,test[2]
,....
如果必须使用test1
,那么一种方法是将其放入对象中。
var obj = {};
obj.test1 = msg;
trace(obj["test" + 1]);
答案 1 :(得分:1)
您在函数内声明的变量不会添加到this
对象中。您只需通过变量名称引用它们:
function testing(msg) {
var test1 = msg;
trace(test1);
}
除了eval
之外,没有任何其他方式(除了{{1}},并且您通常希望避免这种情况)使用包含其名称的字符串来引用局部变量的名称。
如果你需要以某种方式按名称引用它,那么你必须将它放在其他容器中。定义一个本地对象并使这些变量成为它的成员,或者使该函数成为类的一个方法并使用类变量。