有没有办法在AS3中向Object添加静态函数

时间:2014-01-28 00:38:39

标签: actionscript-3 flash

有一种方法可以通过每个类的'prototype'属性添加函数和属性。但是,这些新函数仅在此类实例中可用。问题:是否可以在运行时向Object添加静态函数和属性?

1 个答案:

答案 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

我不会建议这种能力;它将导致非常的代码难以调试和维护。