如何在arg
数组中的任意数量的元素中实现以下功能?如果它是一个函数,我use Function.apply(),但我无法弄清楚如何使用new
运算符。
var arg:Array = [1,2];
new MyClass( arg[0], arg[1] );
答案 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