2009-03-03 127 views
1

在ActionScript 3,为什么getDefinitionByName()返回一个对象时,文档说:为什么从getDefinitionByName()返回对象?

返回到由名称参数指定的类的类对象的引用。

基于此,我会断定返回的对象应该是Class而不是Object。有人能够启发我为什么不是这样吗?

回答

7

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

+0

这是正确的答案,有人应该更新这个问题。 – 2012-10-27 01:33:20

6

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

2

也许Adobe认为此函数可能会在未来版本的Flash Player中返回不同的值。例如,ActionScript所基于的标准ECMAScript在历史上一直使用具有原型的Function对象作为类对象的基础。在讨论ECMAScript标准的最新版本时,已经有人在运行时“冻结”基于函数的类,以使它们变成诸如编译时间对象之类的东西。如果你也可以为它们指定一个定义名称呢?他们实际上是Class在这一点上,还是他们仍然或类型Function?在我看来可能是后者。 “类”和“函数”引用都可以概括为Object,所以返回类型在这种情况下是有意义的。

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

相关问题