2009-01-22 9 views

Respuesta

5

Puede usar the constructor property si su objeto ha sido creado a partir de una clase (de los documentos: "Si un objeto es una instancia de una clase, la propiedad del constructor contiene una referencia al objeto de clase. con una función constructora, la propiedad constructor contiene una referencia a la función constructora "):.

var classRef:Class = myObject.constructor as Class; 

o puede utilizar flash.utils.getQualifiedClassName() y flash.utils.getDefinitionByName() (no es una forma muy agradable ya que esto implica la manipulación de cadenas innecesarias en las implementaciones de estas funciones de la biblioteca):

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

Vale la pena señalar que los objetos XML (XML, XMLList) son una excepción a esto (es decir. (nuevo XML() como Objeto) .constructor como Clase == nulo). Recomiendo volver a caer a getDefinitionByName (getQualifiedClassName) cuando el constructor no se resuelve:

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

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

    return cls; 
} 

Tenga en cuenta que getDefinitionByName generará un error si la clase se define de una manera diferente (incluyendo un niño) dominio de la aplicación del código de llamada.

Cuestiones relacionadas