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")一样完成?
它是一个静态变量,因此您将无法使用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的回答,这对我来说是新的.:)
| 归档时间: |
|
| 查看次数: |
2526 次 |
| 最近记录: |