问题描述
如何测试实例的类型为Object
?如果我尝试使用is
运算符,则所有Object
子类也将返回true。
var o:Object = {};
var s:Sprite = new Sprite();
trace(o is Object); //true
trace(s is Object); //true
如何让它仅返回实例为true的Object
超类,而不是无数个子类呢?
解决方法
flash.utils.getQualifiedClassName(...)方法返回实例及其作为方法参数传递的类的类的确切 String 表示形式。
import flash.utils.getQualifiedClassName;
var O:Object = {};
var S:Sprite = new Sprite;
var GQ:Function = getQualifiedClassName;
trace(GQ(O) == GQ(Object)); // true
trace(GQ(S) == GQ(Object)); // false
UPD :还有另一种方法,尽管我个人不太喜欢。您可以使用Object.constructor属性,它可能指向给定实例的类构造函数。
function isObject(target:Object):Boolean
{
return target.constructor == Object
}
trace(isObject(O)); // true
trace(isObject(S)); // false