为什么从getDefinitionByName()返回对象?
-
03-07-2019 - |
题
在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中所读到的内容中的推测。和各委员会成员的博客。
不隶属于 StackOverflow