Javascript jQuery-在确保数组成员完整性的同时扩展对象
我正在使用一个典型的Javascript jQuery-在确保数组成员完整性的同时扩展对象,javascript,jquery,arrays,jquery-plugins,Javascript,Jquery,Arrays,Jquery Plugins,我正在使用一个典型的$编写一个jQuery插件。扩展场景以合并用户设置和默认设置,如下所示: var settings = $.extend({ title: '', padding: [0,0,0,0] }, options); 有没有一种快速的方法可以确保填充始终是一个由4个成员组成的整数数组,尊重用户的正确参数,但忽略/清除坏类型参数?否,在扩展默认值之前,您必须检查选项的有效性。所以没有“捷径” 不过,我会选择四个独立的属性,以使代码更具可读性(哪个索引
$编写一个jQuery插件。扩展场景以合并用户设置和默认设置,如下所示:
var settings = $.extend({
title: '',
padding: [0,0,0,0]
}, options);
有没有一种快速的方法可以确保填充
始终是一个由4个成员组成的整数数组,尊重用户的正确参数,但忽略/清除坏类型参数?否,在扩展默认值之前,您必须检查选项的有效性。所以没有“捷径”
不过,我会选择四个独立的属性,以使代码更具可读性(哪个索引是哪个填充;top、left、right、bottom?),并解决您的问题
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;
}
if(options.padding&&$.isArray(options.padding)){
var pd=options.padding;
//解析快捷方式。
开关(pd.长度){
案例0:
options.padding=[0,0,0,0];
打破
案例1:
options.padding=[pd[0],pd[0],pd[0],pd[0]];
打破
案例2:
options.padding=[pd[0],pd[1],pd[0],pd[1]];
打破
案例3:
options.padding=[pd[0],pd[1],pd[2],pd[1];
打破
违约:
options.padding=pd.拼接(0,4);
}
//消毒值。
对于(变量i=0;i<4;i++){
var pv=期权。填充[i];
开关(pv类型){
案件编号:
选项填充[i]=数学地板(pv);
打破
违约:
选项。填充[i]=0;
打破
}
}
}否则{
删除选项。填充;
}
不,您必须自己完成。您必须自己编写所有验证。一个建议是测试它是否符合您想要的条件,如果它没有将一个错误日志传递到控制台,让开发人员知道它不是正确的,或者如果您不想键入所有的选项,您可以使用with
:(注意:通常情况下,您不应该使用with
,只是说)对于填充选项来说,这是非常多的代码。小心不要编写“只写”的代码。。。