我正在编写一个jQuery插件,使用典型的$.extend
方案将用户设置与默认值合并,如:
var settings = $.extend({
title: '',
padding: [0,0,0,0]
}, options);
是否有一种快速的方法来确保padding
始终是一个4个成员的整数数组,尊重用户的正确参数,但忽略/清理错误的类型参数?
答案 0 :(得分:1)
不,在扩展默认值之前,您必须检查options
的有效性。所以没有“迅捷的方式”。
然而,我会选择四个单独的属性来使代码更具可读性(哪个索引是填充;顶部,左侧,右侧,底部?)并解决您的问题......
var settings = $.extend({
title: '',
paddingLeft: 0,
paddingTop: 0,
paddingRight: 0,
paddingBottom: 0,
}, options);
答案 1 :(得分:0)
我最终得到了以下代码,到目前为止一切正常:
if (options.padding && $.isArray(options.padding)) {
var pd = options.padding;
// Parsing shortcuts.
switch (pd.length) {
case 0:
options.padding = [0,0,0,0];
break;
case 1:
options.padding = [pd[0], pd[0], pd[0], pd[0]];
break;
case 2:
options.padding = [pd[0], pd[1], pd[0], pd[1]];
break;
case 3:
options.padding = [pd[0], pd[1], pd[2], pd[1]];
break;
default:
options.padding = pd.splice(0, 4);
}
// Sanitizing values.
for (var i = 0; i < 4; i++) {
var pv = options.padding[i];
switch (typeof pv) {
case 'number':
options.padding[i] = Math.floor(pv);
break;
default:
options.padding[i] = 0;
break;
}
}
} else {
delete options.padding;
}