1

在 Actionscript 3 中,为什么当文档说 getDefinitionByName() 返回一个对象:

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

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

4

3 回答 3

7

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

于 2009-03-09T01:31:33.330 回答
6

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

于 2009-03-03T09:52:58.527 回答
2

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

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

于 2009-03-05T00:00:43.177 回答