为什么从getDefinitionByName()返回对象?

时间:2009-03-03 01:26:04

标签: flex actionscript-3 actionscript flex3

在Actionscript 3中,为什么getDefinitionByName()在文档说:

时返回一个Object
  

返回对name参数指定的类的类对象的引用。

基于此,我得出结论,返回的对象应该是Class而不是Object。有人可以告诉我为什么不是这样吗?

3 个答案:

答案 0 :(得分:7)

getDefinitionByName也可以返回一个Function,例如getDefinitionByName('flash.utils.getDefinitionByName')。 这仅适用于名称空间级别的函数,而不是静态类方法。

答案 1 :(得分:6)

尽管有方法签名,但getDefinitionByName确实返回Class。我认为误导性签名是由于Class对象之前存在的方法(当它用于返回匿名/扩展对象实例时)。

答案 2 :(得分:2)

也许Adobe认为此函数可能会在未来版本的Flash Player中返回不同的值。例如,ActionScript所基于的标准ECMAScript历来使用带有原型的Function个对象作为类类对象的基础。在讨论最新版本的ECMAScript标准时,已经出现了在运行时“冻结”基于函数的类以使它们成为类似编译时Class对象的东西。如果您还可以为它们指定定义名称,该怎么办?它们实际上是Class类型,还是它们仍然是Function?可能是后者,在我看来。 “类”和“函数”引用都可以概括为Object,因此返回类型在此上下文中是有意义的。

注意:这个解释纯粹基于我在ECMAScript specification wiki和各委员会成员的博客中所读到的内容进行推测。