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