如何获得变量类型?并实例化它?

JD *_*cks 2 apache-flex air

我正在尝试创建一个打开窗口的功能,但确保相同的窗口尚未打开.我希望能够传递一个非实例化的var或一个实例化的var,它可以以任何方式工作.如果窗口已经打开,它将关闭它然后重新打开它.

所以我需要一种方法来传递Window类型的变量或子类,如果它,并实例化适当的子类.

我正在寻找这样的东西:

public function openWindowOnce(window:Window):void
{
    if(isOpen(window))
    {
        closeIfOpen(window);
    }
    window = new Window(); /**<-- THIS LINE window can also be a sublcass of window, 
                             *    I want to instatiate the correct sublass,
                             *    I also want to make sure that it is a Window or a
                             *    Sublcass of window before I instatiate it.
                             */ 
    window.open();
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

Che*_*try 5

您可以尝试使用组合flash.utils.getDefinitionByName(),flash.utils.getQualifiedClassName()ClassFactory实现结果.

var className:string = getQualifiedClassName(object); //returns the class name    
var classObj:Class = getDefinitionByName(className) as Class; //get a Class object
var factory:IFactory = new ClassFactory(classObj);// get a Class factory    
var newObj:Object = factory.newInstance();
Run Code Online (Sandbox Code Playgroud)