代码之家  ›  专栏  ›  技术社区  ›  Iain

在ActionScript3中,如何获取对对象类的引用?

  •  6
  • Iain  · 技术社区  · 16 年前

    在ActionScript3中,如何获取对对象类的引用?

    2 回复  |  直到 12 年前
        1
  •  5
  •   hasseg    16 年前

    你可以使用 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;
    
        2
  •  9
  •   Richard Szalay    16 年前

    值得注意的是,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将引发错误。