2009-01-22 4 views

Répondre

5

Si votre objet a été créé à partir d'une classe (à partir des documents: ) Si un objet est une instance d'une classe, la propriété constructeur contient une référence à l'objet de classe. avec une fonction constructeur, la propriété constructeur est titulaire d'une référence à la fonction constructeur «):.

var classRef:Class = myObject.constructor as Class; 

Ou vous pouvez utiliser flash.utils.getQualifiedClassName() et flash.utils.getDefinitionByName() (pas une façon très agréable car cela implique la manipulation de chaînes inutiles dans les implémentations de ces fonctions de bibliothèque):

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

Il est à noter que les objets XML (XML, XMLList) sont une exception à cela (ie. (nouveau XML() en tant qu'objet). Constructeur en tant que classe == null). Je recommande de retomber à getDefinitionByName (getQualifiedClassName) lorsque le constructeur ne résout pas:

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

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

    return cls; 
} 

Notez que getDefinitionByName renvoie une erreur si la classe est définie dans un domaine d'application différent (y compris un enfant) à partir du code d'appel.

Questions connexes