Actionscript 3 有没有一种方法可以将静态函数添加到AS3中的对象
有一种方法可以通过每个类的“prototype”属性向中添加函数和属性。但是,这些新函数仅在此类实例中可用。问题:是否可以在运行时向对象添加静态函数和属性?否,这是不可能的。静态方法是类定义的一部分,需要在编译时存在。如果您需要在运行时添加可静态调用的函数,您可以使用以下方法轻松完成此操作:Actionscript 3 有没有一种方法可以将静态函数添加到AS3中的对象,actionscript-3,flash,Actionscript 3,Flash,有一种方法可以通过每个类的“prototype”属性向中添加函数和属性。但是,这些新函数仅在此类实例中可用。问题:是否可以在运行时向对象添加静态函数和属性?否,这是不可能的。静态方法是类定义的一部分,需要在编译时存在。如果您需要在运行时添加可静态调用的函数,您可以使用以下方法轻松完成此操作: public class StaticMethods { private static var _map:Object = {}; public static function add(n
public class StaticMethods
{
private static var _map:Object = {};
public static function add(name:String, method:Function):void
{
_map[name] = method;
}
public static function call(name:String, ...args):*
{
if(_map[name])
{
return _map[name].apply(StaticMethods, args);
}
}
}
其用法如下:
function sum(a:int, b:int):int
{
return a + b;
}
StaticMethods.add("sum", sum);
trace(StaticMethods.call("sum", 5, 10)); // 15
但我不建议使用这种功能;这将导致代码很难调试和维护。您尝试过使用“动态类”吗?是的,您可以通过
单例模式来实现这一点。尽管我认为静态变量或函数可能适合utils
。