Flex/Actionscript:动态访问静态var

Nie*_*sma 2 apache-flex actionscript-3

假设我有一个Foo类:

public class Foo
{

   public static var bar:String = "test";

}
Run Code Online (Sandbox Code Playgroud)

如何在运行时使用字符串"Foo"或/和Foo的实例以及字符串"bar"来引用bar?

var x:Object = new Foo();
...
x["bar"]
Run Code Online (Sandbox Code Playgroud)

...不起作用,IntelliJ中的调试模式得到了我的希望,因为bar被列为属性.

更新:

请注意,在"操作点",我对编译时的foo一无所知.我需要通过字符串"Foo"和"bar"来解析Foo.bar.

换句话说,因为flex没有eval,我怎么能和eval("Foo.bar")一样完成?

Chr*_*ato 6

它是一个静态变量,因此您将无法使用foo 实例访问它; 它使用ClassName.variableName表示法静态访问,如下所示:

跟踪(Foo.bar);

//产量:"测试"

同样,因为您已声明Foo和bar公开,所以您应该能够从应用程序的任何位置以这种方式访问​​Foo.bar.


更新:啊,我明白你在问什么.您可以使用flash.utils.Summary.getDefinitionByName():

// Either this way
trace(getDefinitionByName("Foo").bar);

// Or this
trace(getDefinitionByName("Foo")["bar"]);
Run Code Online (Sandbox Code Playgroud)

......后者归功于Jeremy的回答,这对我来说是新的.:)