【问题标题】:Why is object returned from getDefinitionByName()?为什么从 getDefinitionByName() 返回对象?
【发布时间】:2009-03-03 01:26:03
【问题描述】:

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

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

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

【问题讨论】:

    标签: apache-flex actionscript-3 actionscript flex3


    【解决方案1】:

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

    【讨论】:

    • 这是正确答案,应该有人更新这个问题。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      注意:这个解释纯粹是根据我在ECMAScript specification wiki 和各个委员会成员的博客中阅读的内容进行的推测。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-29
        • 2020-01-18
        • 1970-01-01
        • 2022-08-16
        • 1970-01-01
        • 2021-12-30
        相关资源
        最近更新 更多