在ActionScript 3中通过数组将参数传递给“new”运算符

时间:2011-07-28 15:00:41

标签: actionscript-3

如何在arg数组中的任意数量的元素中实现以下功能?如果它是一个函数,我use Function.apply(),但我无法弄清楚如何使用new运算符。

var arg:Array = [1,2];
new MyClass( arg[0], arg[1] );

4 个答案:

答案 0 :(得分:1)

不要传递数组的每个元素,只需传递数组。

var arg:Array = [1,2];
new MyClass(arg);

然后在你的课堂内循环播放数组。

答案 1 :(得分:1)

如果您将类设置为使用... args接受参数列表,则可以根据需要传入。然后在构造函数中,您将像普通数组一样访问它们。

class MyClass 
{
    public function MyClass(... args):void
    {
        //args is an Array containing all the properties sent to the constructor
        trace(args.length);
    }
}

答案 2 :(得分:1)

遗憾的是,这是不可能的,因为无法直接访问Class对象的构造函数方法。

注意:如果您正在使用Function对象来组成您的类(原型继承),那么它是可能的,但我认为,这不适合您。

您可以使用一个小(丑陋)辅助方法解决问题,您可以在此处阅读:http://jacksondunstan.com/articles/398

答案 3 :(得分:0)

如评论中所述,无法在构造函数上应用设置,但您可以使用此技巧在类的新实例(应该是公共的)上设置属性

public function setProps(o:Object, props:Object):* {
 for (var n:String in props) {
   o[n] = props[n];
 }
 return o;
}

..像这样使用

var args:Object = {x:1, y:2};
var instance:MyClass = setProps( new MyClass(), args ) );

<强>源:
http://gskinner.com/blog/archives/2010/05/quick_way_to_se.html