【问题标题】:Can I extend Function's prototype in ActionScript?我可以在 ActionScript 中扩展 Function 的原型吗?
【发布时间】:2009-05-09 16:51:55
【问题描述】:

我正在尝试将prototype.js 的bind() 函数合并到我的Flash 组件中。我找到了 Jordan Broughs 的 this article,这给了我希望。他建议使用这个代码sn-p:

        Function.prototype.bind = function():Function {
          var __method:Function = this;
          var object:Object = arguments[0];
          return function():void {
            __method.apply(object, arguments);
          }
        }

所以,我把它放在我的类中,放在任何方法或构造函数之外。但是,当我尝试在函数上调用 bind() 时,会出现以下编译器错误:

1061: 调用一个可能未定义的 方法通过引用绑定 静态类型函数。

有什么想法吗?

【问题讨论】:

    标签: flash actionscript-3 prototype


    【解决方案1】:

    您正在扩展 Function 对象的 prototype。它不属于一个类。这不是你班级的方法。

    Function 对象基本上是一个内置类型,它的prototype 是它的基类。通过添加bind 扩展其prototype,所有继承自Function 的对象(包括您定义的函数在内的所有函数)都会有一个bind 方法来创建闭包。

    编辑:

    这个问题实际上是重复的,这里已经回答了:

    ActionScript problem with prototype and static type variables

    根据该问题,您已删除 :Function 以使其正常工作。

    【讨论】:

    • 好的,太好了。我不确定从哪里开始放置这段代码(我在 javascript 方面有很多经验,但在 ActionScript 方面却很少)。那么,如何在课堂之外添加此代码?它应该与我的班级在同一个文件中吗?它应该在“包”块的内部还是外部?
    • 它可能应该在开头的某个地方,您的代码开始执行的地方。它不应该真正进入任何包装内。我想它应该在任何尝试使用它之前进行,但我有一段时间没有使用 ActionScript 来知道这是否会导致它不起作用,我想你可以测试一下!
    • 嗯,我尝试将该代码放在我的班级之外,但在包块内、包块外以及它自己的文件中,都给出了相同的错误。
    • 我编辑了答案,并附上了类似问题的链接和比我给出的更好的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 2017-05-14
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多