在 Actionscript 3 中,为什么当文档说 getDefinitionByName() 返回一个对象:
返回对 name 参数指定的类的类对象的引用。
基于此,我会得出结论,返回的对象应该是 Class 而不是 Object。有人可以启发我为什么不是这样吗?
在 Actionscript 3 中,为什么当文档说 getDefinitionByName() 返回一个对象:
返回对 name 参数指定的类的类对象的引用。
基于此,我会得出结论,返回的对象应该是 Class 而不是 Object。有人可以启发我为什么不是这样吗?
getDefinitionByName 也可以返回一个 Function,例如 getDefinitionByName('flash.utils.getDefinitionByName')。不过,这只适用于命名空间级别的函数,不适用于静态类方法。
尽管有方法签名,但 getDefinitionByName 确实返回Class。我认为误导性签名是由于 Class 对象之前存在的方法(当它用于返回匿名/扩展对象实例时)。
也许 Adobe 认为这个函数在 Flash Player 的未来版本中可能会返回不同的值。例如,ActionScript 所基于的标准 ECMAScript 历来使用Function
带有原型的对象作为类对象的基础。在讨论 ECMAScript 标准的最新版本时,有人建议在运行时“冻结”基于函数的类,以使它们成为类似于编译时Class
对象的东西。如果您还可以为它们指定定义名称怎么办?此时它们实际上是 type Class
,还是仍然是 type Function
?在我看来,可能是后者。'Class' 和 'Function' 引用都可以概括为Object
,因此返回类型在这种情况下是有意义的。
注意:这个解释纯粹是基于我在ECMAScript 规范 wiki和各个委员会成员的博客中阅读的内容的推测。