假设我有一个 Foo 类:
public class Foo
{
public static var bar:String = "test";
}
如何在运行时使用字符串“Foo”或/和 Foo 的实例和字符串“bar”引用 bar?
I.e.
var x:Object = new Foo();
...
x["bar"]
...不起作用,IntelliJ 中的调试模式让我满怀希望,因为 bar 被列为属性。
Update:
请注意,在“行动点”,我在编译时对 foo 一无所知。我需要通过字符串“Foo”和“bar”解析Foo.bar。
换句话说,由于 flex 没有 eval 我怎样才能完成与 eval("Foo.bar") 相同的功能?
它是一个静态变量,因此您无法使用instance的 foo;它是使用 ClassName.variableName 表示法静态访问的,如下所示:
跟踪(Foo.bar);
// 产量:“测试”
此外,由于您已将 Foo 和 bar 声明为公共,因此您应该能够从应用程序中的任何位置以这种方式访问 Foo.bar。
Update: 嗯,明白你想问什么了。您可以使用 flash.utils.Summary.getDefinitionByName():
// Either this way
trace(getDefinitionByName("Foo").bar);
// Or this
trace(getDefinitionByName("Foo")["bar"]);
...后者感谢杰里米的回答,这对我来说是新的。 :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)