将方法添加到as3类

tak*_*shi 2 flash actionscript actionscript-3

在as3中有一个Point(flash.geom.Point)类我想将方法​​添加到类Point(例如convertToStagePointMyMethod()),我想通过使用调用此方法

var a:Point=new Point();
a.convertToStagePointMyMethod()
Run Code Online (Sandbox Code Playgroud)

为了将此方法添加到类Point,我该怎么办?没有继承就有可能.我想在.NET中使用它像"部分"类

OXM*_*456 6

这是一个使用原型的快速示例:

Point.prototype.foo = function (arg:String):void{
    trace("foo called");//foo called
    trace("arg",arg);//this is a test
    trace("x",this.x);//7
    trace("y",this.y);//54
};

var p:Point = new Point(7,54);
p["foo"]("this is a test");
Run Code Online (Sandbox Code Playgroud)

这是在不扩展类的情况下执行此操作的唯一方法.另请注意,如果您尝试使用p.foo("test"),编译器将无法在严格模式下编译,这就是我p["foo"]("test")在我的示例中编写的原因.

  • 我和这个人在一起.整个原型风格的OOP系统是旧版ActionScript的回归,我个人不会让任何人在我公司的AS3客户端中使用这种技术.当然,您可以将Point子类化,但您也可以使用在Point上运行的静态函数向项目添加实用程序类.我更喜欢原型路线.在旁注中,尽管我喜欢Moock书作为参考,但我已经隐藏了本书末尾的第15章,标题为"如何不写AS3"或"Typechecking被高估" (3认同)