1

假设我有一个设置为 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
4

1 回答 1

0

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

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

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

如果这按您想象的方式工作,那么您实际上会到达false这里。

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

我认为没有办法确定变量期望的类型。此外,我认为如果您认为需要在运行时检查变量所期望的类型,那么您就做错了。

于 2013-06-23T23:03:31.600 回答