Dav*_*ave 1 apache-flex flex3 actionscript-3
对于一个开源项目,我正在寻找一种方法来向方法发送多个变量.例如,这些变量是我想直接传递给我正在创建的对象的变量.
我认为一个对象是一个很好的方法,因为我可以发送尽可能多的变量,而不必事先考虑每个可能的变量并创建一个接受40多个变量的方法.那有点糟透了.
但问题是,我不知道如何"遍历"一个对象并找到它的所有变量.使用数组这很简单,但我不能轻易地使用它发送变量的名称.
为澄清一个例子:
public function create(settings:Object=undefined):void{
var item:Panel = new Panel();
/*
the idea is that 'settings' should contain something like:
settings.width=300;
settings.height=500;
settings.visible=false;
and I want to be able to walk through the provided variables,
and in this case inject them into 'item'.
*/
}
Run Code Online (Sandbox Code Playgroud)
反正有没有这样做?或者我错误地使用Object的想法,我应该选择使用其他解决方案吗?请指教.
提前谢谢了!
-DJ
您可以使用for(var prop:String in obj)循环查看对象属性.... args参数允许您将未定义数量的变量传递给方法:
public function test()
{
var bar:Object = {x:1, y:2, z:3};
var baz:Object = {a:"one", b:"two", c:"three"};
foo(bar, baz);
}
public function foo(...args):void {
for(var i:int = 0; i<args.length; i++) {
for(var s:String in args[i]) {
trace("prop :: "+s);
trace("value :: "+args[i][s]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
版画
prop :: z
value :: 3
prop :: x
value :: 1
prop :: y
value :: 2
prop :: b
value :: two
prop :: c
value :: three
prop :: a
value :: one
Run Code Online (Sandbox Code Playgroud)
你为此获得了一点性能,但有时它就是需要的.