我可以在ActionScript中扩展Function的原型吗?

时间:2009-05-09 16:51:56

标签: flash actionscript-3 prototype

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

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

所以,我把它放在我的班级中,不在任何方法或构造函数之外。但是,当我尝试在函数上调用bind()时,我得到了这个编译错误:

  

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

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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

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

修改

这个问题实际上是重复的,已在此处得到解答:

ActionScript problem with prototype and static type variables

根据该问题,你删除了:函数以使其工作。