【问题标题】:In ActionScript3, how do you get a reference to an object's class?在 ActionScript3 中,如何获得对对象类的引用?
【发布时间】:2009-01-22 12:29:13
【问题描述】:

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

【问题讨论】:

标签: flash actionscript-3


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    var classRef:Class = myObject.constructor as Class;
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      相关资源
      最近更新 更多