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

时返回一个Object
  

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

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

有帮助吗?

解决方案

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

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top