jQuery合并(减少)默认插件选项,哪个更好?

时间:2011-06-08 20:11:25

标签: jquery arrays object merge options

您好我正在构建一个插件,不幸的是有146个选项......

合并(缩减)选项的最佳方式是什么。

抱歉我的英语很差。

示例:

让我们说我们想要将不同的颜色应用于两个不同的元素

普通默认选项:

elemColor1:'black',
elemColor2:'red',

并像这样使用它们:

elem1.css('color',options.elemColor1);
elem1.css('color',options.elemColor2);

还是数组?

elemColor:['black','red'],

并像这样使用它们:

elem1.css('color',options.elemColor[0]);
elem2.css('color',options.elemColor[1]);

还是作为对象?

elemColor:{color1:'black',color2:'red'},

并像这样使用它们:

elem1.css('color',options.elemColor.color1);
elem2.css('color',options.elemColor.color2);

如果作为数组或对象传递,我们遇到的问题是,如果我们设置其他参数而不是默认值,我们会忘记elemColor的第二个参数

elemColor:['green'],

然后jquery插件无法读取默认的第二个值(红色)

哪个更好(性能,文件小,e.t.c)?

还有其他方法???

2 个答案:

答案 0 :(得分:1)

毫无疑问,对象更易于管理,从长远来看,不会让您失去任何重要的性能。如果你真的有很多连续的选项(color1,color2,color3等),那么使用数组作为对象值可能是有意义的。一定要好好组织和评论。类似的东西:

{colors: [
          '#fff', // element 1
          '#000', // 2
          '#ccc', // 3
          ...
         ]
}

答案 1 :(得分:0)

从使用此插件的人的角度来看,我肯定会使用该数组。这似乎是使用它的最合理的方式。然后你可以处理自己陈述的问题。在您的init中,您可以只检查传递的数组的长度,如果它太小,请处理它;用默认值或其他东西填充缺失的那些。