AS3:如何严格测试实例是否为对象类型?

Bla*_*int 1 inheritance actionscript-3

如何测试实例是否属于类型Object?如果我尝试is操作符,所有Object子类也返回 true。

var o:Object = {};
var s:Sprite = new Sprite();
trace(o is Object); //true
trace(s is Object); //true
Run Code Online (Sandbox Code Playgroud)

我怎么能让它只返回 true 的实例是一个Object超类而不是它无数的子类中的任何一个?

Org*_*nis 5

flash.utils.getQualifiedClassName(...)方法返回的确切字符串类的表示形式实例和它的类作为方法参数传递。

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
Run Code Online (Sandbox Code Playgroud)

UPD:还有另一种方法可以做到,尽管我个人不太喜欢它。您可以使用Object.constructor属性,该属性可能指向给定实例的类构造函数。

function isObject(target:Object):Boolean
{
    return target.constructor == Object
}

trace(isObject(O)); // true
trace(isObject(S)); // false
Run Code Online (Sandbox Code Playgroud)