as3:使用对象以任何顺序传递参数 - 类配置

时间:2010-03-03 14:14:18

标签: php actionscript-3 oop actionscript

我想将配置参数传递给类。这些都是配置类的可选变量 - 并且应该能够以任何顺序运行。

此刻我只是通过常规方式通过可选的变量。假设构造函数如下:

private var _reqVar:String;
private var _optVar1:String;
private var _optVar2:String;

public function Constructor(reqVar:String, optVar1:String = "empty", optVar2:String = "empty){

    // set the variable to equal the arguments here...

} 

这个问题是针对最终用户的,其中实例化类不是特别可读(特别是当参数列表变得非常大时)

理想情况下,我希望传递参数,但类似于:

var instance:ClassType = new ClassType(reqVar, {width:100, height:100, speed:4, lives:3})

这又是相当直接的。我偶然发现了以下几点:

  • 将参数赋值给同一个键的var(我知道在php中引用一个键的变量名,你可以使用$$ key = $ value,在as3中是否有等价的?)
  • 为类
  • 不支持的变量名显示错误(使用'throw'方法)

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:2)

更新回答:

public function Test(reqVar, optionalVars:Object)
{
    for (var prop:String in optionalVars)
    {
        try
        {
            this[prop] = optionalVars[prop];
        }
        catch (error:Error)
        {
            throw new Error("Unknown property: " + prop);
        }
    }

}

所以问题的答案是:

  • 您使用object[NAME]按名称分配属性或变量,在本例中为this['propertyName']
  • 您可以使用hasOwnProperty检查属性是否存在。 更新:如果您还要分配属性以外的变量,我认为您无法检查它们是否存在。要解决此问题,您可以假设它们存在,分配给它们并在使用无效的变量名时出错。您还可以将赋值包装在try ... catch块中,并抛出一个更漂亮的异常,如上所示。