Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 有没有一种方法可以将静态函数添加到AS3中的对象_Actionscript 3_Flash - Fatal编程技术网

Actionscript 3 有没有一种方法可以将静态函数添加到AS3中的对象

Actionscript 3 有没有一种方法可以将静态函数添加到AS3中的对象,actionscript-3,flash,Actionscript 3,Flash,有一种方法可以通过每个类的“prototype”属性向中添加函数和属性。但是,这些新函数仅在此类实例中可用。问题:是否可以在运行时向对象添加静态函数和属性?否,这是不可能的。静态方法是类定义的一部分,需要在编译时存在。如果您需要在运行时添加可静态调用的函数,您可以使用以下方法轻松完成此操作: public class StaticMethods { private static var _map:Object = {}; public static function add(n

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

否,这是不可能的。静态方法是类定义的一部分,需要在编译时存在。如果您需要在运行时添加可静态调用的函数,您可以使用以下方法轻松完成此操作:

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