在Actionscript 3中,为什么getDefinitionByName()在文档说:
时返回一个Object返回对name参数指定的类的类对象的引用。
基于此,我得出结论,返回的对象应该是Class而不是Object。有人可以告诉我为什么不是这样吗?
答案 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和各委员会成员的博客中所读到的内容进行推测。