Actionscript 3:可以浏览/读取对象变量吗?

时间:2009-07-27 00:59:05

标签: flex actionscript-3 flex3

对于一个开源项目,我正在寻找一种向方法发送多个变量的方法。例如,这些变量是我想直接传递给我正在创建的对象的变量。

我认为一个对象是一个很好的方法,因为我可以发送尽可能多的变量而不必事先考虑每个可能的变量并创建一个接受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'.
    */
}

有没有这样做?或者我错误地使用Object的想法,我应该选择使用其他解决方案吗?请指教。

非常感谢提前!

-DJ

1 个答案:

答案 0 :(得分:5)

您可以使用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]);
        }
    }
}

打印

prop :: z
value :: 3
prop :: x
value :: 1
prop :: y
value :: 2
prop :: b
value :: two
prop :: c
value :: three
prop :: a
value :: one

你为此获得了一点性能,但有时它就是你所需要的。