我有一个类需要用对象进行实例化:
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来维护属性。
分析复杂对象参数必须在外部完成,因为据我所知,这不是一个类"自己"的功能。