Actionscript检查自定义对象定义的类型(非实际类型)

时间:2013-06-23 08:31:37

标签: actionscript-3

假设我有一个设置为null的自定义对象变量,我想检查它的类型定义。我该怎么做?

var a:MyObject = null;

// how do I check if a is MyObject?
//
// a is MyObject == false
// a instanceof MyObject == false
// getQualifiedClassName(a) <-- Exception
// typeof(a) == "object"
// describeType(a) <-- Exception
// a.constructor <-- Exception
// a.prototype <-- Exception

1 个答案:

答案 0 :(得分:0)

我认为你误解了问题中所有这些例子的工作方式。

它们不检查与变量关联的类型 - 它们检查分配给该变量的实例的类型。这是一个很好的例子,说明为什么你的例子没有意义:

var prop:DisplayObject = new MovieClip();
trace(prop is MovieClip); // true

如果按照您认为的方式运行,您实际上会在此处获得false

当你创建一个变量并给它一个类型时,你正在做的就是告诉编译器它希望看到分配给该属性的实例类型,并且如果某个东西不是预期的实例则抛出错误类型已分配给它。

我认为没有办法确定变量所期望的类型。而且,我认为如果你看到需要检查一个变量在运行时期望的类型,那么你就是在做一些非常错误的事情。