在ActionScript3中,如何获取对象类的引用?
答案 0 :(得分:9)
值得注意的是,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将抛出错误。
答案 1 :(得分:5)
如果您的对象是从类创建的,则可以使用the constructor
property(来自docs:“如果对象是类的实例,则构造函数属性包含对类对象的引用。如果使用构造函数创建对象,则构造函数属性保存对构造函数的引用。“):
var classRef:Class = myObject.constructor as Class;
或者您可以使用flash.utils.getQualifiedClassName()
和flash.utils.getDefinitionByName()
(这不是很好的方法,因为这会在这些库函数的实现中引入不必要的字符串操作):
var classRef:Class = getDefinitionByName(getQualifiedClassName(myObject)) as Class;