带有字符串的新构造函数

Dan*_*iel 0 actionscript-3

我想根据字符串值调用构造函数,而不是很多if条件

var valueString:String = "myNewClassB";
var value:Class = valueString as Class; 

new value() // new value() == new myNewClassB() 
Run Code Online (Sandbox Code Playgroud)

我知道它会失败,我需要帮助.谢谢.

Jam*_*ino 6

var ClassReference:Class = getDefinitionByName("myNewClassB");
var instance = new ClassReference();
Run Code Online (Sandbox Code Playgroud)

那是基础,萌芽.


Jak*_*aby 5

如果要这样做,有两种方法,将类分配给对象中的示例所创建的类列表:

var list:Object = {
 classA: FirstClass,
 classB: SecondClass,
 classC: ThirdClass
}
Run Code Online (Sandbox Code Playgroud)

而不是用字符串调用它们:

var desiredObject:* = new (list["classA"] as Class)();
Run Code Online (Sandbox Code Playgroud)

或者您也可以使用getDefinitionBtName,但如果您想获得一个类,则需要提供一个全名(包含)

var desiredClass = getDefinitionByName( "com.somedomain.SomeClass" );
Run Code Online (Sandbox Code Playgroud)

如果您正在编写SWF内容而不想从中获取类,则应使用该加载器 loaderInfo.applicationDomain.getDefinition( "....class" );

您还可以通过以下方式检查类是否定义:

loaderInfo.applicationDomain.hasDefinition( "....class" );
Run Code Online (Sandbox Code Playgroud)