假设我有一个Foo类:
public class Foo { public static var bar:String = "test"; }
如何在运行时使用字符串"Foo"或/和Foo的实例以及字符串"bar"来引用bar?
即
var x:Object = new Foo(); ... x["bar"]
...不起作用,IntelliJ中的调试模式得到了我的希望,因为bar被列为属性.
更新:
请注意,在"操作点",我对编译时的foo一无所知.我需要通过字符串"Foo"和"bar"来解析Foo.bar.
换句话说,因为flex没有eval,我怎么能和eval("Foo.bar")一样完成?
它是一个静态变量,因此您将无法使用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"]);
......后者归功于Jeremy的回答,这对我来说是新的.:)