【发布时间】:2009-01-22 12:29:13
【问题描述】:
在 ActionScript3 中,如何获得对对象类的引用?
【问题讨论】:
标签: flash actionscript-3
在 ActionScript3 中,如何获得对对象类的引用?
【问题讨论】:
标签: flash actionscript-3
值得注意的是,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 将引发错误。
【讨论】:
如果你的对象是从一个类创建的,你可以使用the constructor property(来自文档:“如果一个对象是一个类的实例,则构造函数属性持有对类对象的引用。如果对象是用构造函数创建的,构造函数属性持有对构造函数的引用。"):
var classRef:Class = myObject.constructor as Class;
或者您可以使用flash.utils.getQualifiedClassName() 和flash.utils.getDefinitionByName()(这不是一个很好的方法,因为这需要在这些库函数的实现中进行不必要的字符串操作):
var classRef:Class = getDefinitionByName(getQualifiedClassName(myObject)) as Class;
【讨论】: