2009-01-22 30 views

回答

5

如果您的对象是从一个类创建的(从文档:“如果一个对象是一个类的实例,构造函数属性持有对类对象的引用,则可以使用the constructor property。具有构造函数,constructor属性具有对该构造函数的引用“):

var classRef:Class = myObject.constructor as Class; 

或者你可以使用flash.utils.getQualifiedClassName()flash.utils.getDefinitionByName()(不是一个很好的方式,因为这需要不必要的字符串操作中的实现这些库函数):

var classRef:Class = getDefinitionByName(getQualifiedClassName(myObject)) as Class; 
9

值得注意的是,XML对象(XML,XMLList)是一个例外(即。 (new XML()as Object).constructor as Class == null)。我建议回落至getDefinitionByName(的getQualifiedClassName)当构造不能解决:

function getClass(obj : Object) : Class 
{ 
    var cls : Class = (obj as Class) || (obj.constructor as Class); 

    if (cls == null) 
    { 
     cls = getDefinitionByName(getQualifiedClassName(obj)); 
    } 

    return cls; 
} 

注意,如果类是在不同的(包括一名儿童)从调用代码的应用程序域定义getDefinitionByName将抛出一个错误。

相关问题