AS3:如何严格测试实例是否为Object类型?
AS3: How to strictly test if instance is Object type?
如何测试实例是否属于 Object
类型?如果我尝试 is
运算符,所有 Object
子类 return 也为真。
var o:Object = {};
var s:Sprite = new Sprite();
trace(o is Object); //true
trace(s is Object); //true
我怎么才能拥有它 return 真正的实例是一个 Object
超类而不是它的无数子类中的任何一个?
flash.utils.getQualifiedClassName(...) 方法 returns class 的 class 的确切 String 表示形式及其 class 传递为方法参数。
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 属性 ,它可能指向给定实例的 class 构造函数。
function isObject(target:Object):Boolean
{
return target.constructor == Object
}
trace(isObject(O)); // true
trace(isObject(S)); // false
如何测试实例是否属于 Object
类型?如果我尝试 is
运算符,所有 Object
子类 return 也为真。
var o:Object = {};
var s:Sprite = new Sprite();
trace(o is Object); //true
trace(s is Object); //true
我怎么才能拥有它 return 真正的实例是一个 Object
超类而不是它的无数子类中的任何一个?
flash.utils.getQualifiedClassName(...) 方法 returns class 的 class 的确切 String 表示形式及其 class 传递为方法参数。
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 属性 ,它可能指向给定实例的 class 构造函数。
function isObject(target:Object):Boolean
{
return target.constructor == Object
}
trace(isObject(O)); // true
trace(isObject(S)); // false