Actionscript 2针对局部变量?

时间:2012-03-07 20:09:23

标签: flash actionscript-2 scope

有关ActionScript 2.0中变量范围的快速问题。今天进行了一些测试,并想知道如何通过连接变量字符串来定位函数的局部变量。

例如:

var txt = "Hello World"; 

function testing(msg) {
    var test1 = msg; 
    trace(this["test"+1]); 
}

testing(txt); 

我希望跟踪是“Hello World”,而是“undefined”。因此,如果在主时间轴上创建了在函数外部创建的变量,那么创建局部函数变量的位置以及如何访问它们?

2 个答案:

答案 0 :(得分:1)

据我所知,你做不到。如果您有test1test2test3,...等等,为什么不将其设为名为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}},并且您通常希望避免这种情况)使用包含其名称的字符串来引用局部变量的名称。

如果你需要以某种方式按名称引用它,那么你必须将它放在其他容器中。定义一个本地对象并使这些变量成为它的成员,或者使该函数成为类的一个方法并使用类变量。