我正在用javascript编写以下函数:
Number.prototype.niceFormat(options) {
var defaultOptions = {
thousandSeparator: ',',
leftPad: 0,
decimalPlaces: 2
};
if (typeof options.thousandSeparator != 'undefined'
&& options.thousandSeparator != null) {
defaultOptions.thousandSeparator = options.thousandSeparator;
}
}
麻烦的是我希望选项完全灵活。
如果我调用niceFormat({decimalPlaces: 3})
,则相应地替换该defaultOptions
属性。decimalPlaces
我不想写 if 语句的次数与defaultOptions
.
有没有一种很好的方法可以灵活地覆盖 中的属性值defaultOptions
?
基本上我正在寻找一种array_merge
用于 javascript 中的对象。
更新:
我从 Qantas 和 Crayon 以及 Paul 的评论中得到了答案,并写下了这个:
Number.prototype.niceFormat = function(options) {
var defaultOptions = {
thousandSeparator: ',',
leftPad: 0,
decimalPlaces: 2
};
var env = defaultOptions;
if (typeof options != 'undefined') {
for (option in env) {
if (options.hasOwnProperty(option)
&& typeof options[option] != 'undefined') {
env[option] = options[option];
}
}
}
无论如何要进一步改善这一点?