AS3用一个可选的Object实例化一个类



我有一个类需要用对象进行实例化:

public class FusePumpComboBox extends Sprite
{
    private var _rowCount;
    public function FusePumpComboBox(args:Object)
    {
        _rowCount = (args.rowCount !== undefined) ? args.rowCount : 5;
    }
}

如果我不想给它一个行计数,并像这样实例化:

var obj:FusePumpComboBox = new FusePumpComboBox();

正如你所料,目前我遇到了一个参数数量不匹配的错误。我试着给args:Object一个默认值。。。我认为这就是解决方案所在,只是不知道该给它什么,也不知道(args:Object = {})是如何不起作用的。

编辑:我也会有getter和setter。。。

你可以试试这个:

public function FusePumpComboBox(args:Object=null)
{
    _rowCount = (args && args.hasOwnProperty('rowCount')) ? args.rowCount : 5;
                       //      ^----- The correct way of checking the properties
}

您可以使用null作为默认值,并在方法中检查args是否为null

我必须注意,尽管这在JavaScript中很常见(用设置解析对象),但在OOP的上下文中继续下去并不是一个好的做法。

上面的答案阐明了解决方案。

附带说明一下:将参数传递给构造函数是一种糟糕的模式。

最好通过getter和setter来维护属性。

分析复杂对象参数必须在外部完成,因为据我所知,这不是一个类"自己"的功能。

相关内容

最新更新