我正在编写一个使用典型$.extend
场景的 jQuery 插件,用于将用户设置与默认值合并,如下所示:
var settings = $.extend({
title: '',
padding: [0,0,0,0]
}, options);
有没有一种快速的方法来确保padding
始终是一个 4 成员的整数数组,尊重用户的正确参数,但忽略/清理错误的类型参数?
我正在编写一个使用典型$.extend
场景的 jQuery 插件,用于将用户设置与默认值合并,如下所示:
var settings = $.extend({
title: '',
padding: [0,0,0,0]
}, options);
有没有一种快速的方法来确保padding
始终是一个 4 成员的整数数组,尊重用户的正确参数,但忽略/清理错误的类型参数?
options
不,您必须在扩展默认值之前检查有效性。所以那里没有“快捷方式”。
但是,我会选择四个单独的属性以使代码更具可读性(哪个索引是哪个填充;顶部、左侧、右侧、底部?)并解决您的问题...
var settings = $.extend({
title: '',
paddingLeft: 0,
paddingTop: 0,
paddingRight: 0,
paddingBottom: 0,
}, options);
我最终得到了以下代码,到目前为止效果很好:
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;
}