有一种方法可以通过每个类的'prototype'属性添加函数和属性。但是,这些新函数仅在此类实例中可用。问题:是否可以在运行时向Object添加静态函数和属性?
答案 0 :(得分:1)
不,那是不可能的。静态方法是类定义的一部分,需要在编译时存在。如果你需要在运行时添加静态可调用的函数,你可以通过这样的方法轻松地完成:
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
我不会建议这种能力;它将导致非常的代码难以调试和维护。