如何从类实例中实例化另一个类对象?
在下面的代码中(不起作用)我希望函数根据传递的参数类返回一个新的类实例。换句话说,我希望函数返回 MySprite 的新实例,而不必调用new MySprite();
。
var mySprite:Sprite = new MySprite();
var anotherSprite:Sprite = makeAnotherSprite(mySprite);
function makeAnotherSprite(instance:Sprite):Sprite
{
return new getDefinitionByName(getQualifiedClassName(instance));
}
答案 0 :(得分:3)
您的解决方案几乎可以正常运行。这是纠正的功能:
function makeAnotherSprite(instance:Sprite):Sprite
{
var qualifiedClassName:String = getQualifiedClassName(instance);
var clazz:Class = getDefinitionByName(qualifiedClassName) as Class;
return new clazz();
}
答案 1 :(得分:1)
一种替代方式,而不是你想要做的,但应该有用。
function makeAnotherSprite(instance:Sprite):Sprite
{
var myClass:Class = Object(instance).constructor;
return new myClass();
}
答案 2 :(得分:0)
制作:
return new (getDefinitionByName(getQualifiedClassName(instance)))();
(括号中)