-1

我正在编写一个使用典型$.extend场景的 jQuery 插件,用于将用户设置与默认值合并,如下所示:

var settings = $.extend({
      title: '',
      padding: [0,0,0,0]
    }, options);

有没有一种快速的方法来确保padding始终是一个 4 成员的整数数组,尊重用户的正确参数,但忽略/清理错误的类型参数?

4

2 回答 2

1

options不,您必须在扩展默认值之前检查有效性。所以那里没有“快捷方式”。

但是,我会选择四个单独的属性以使代码更具可读性(哪个索引是哪个填充;顶部、左侧、右侧、底部?)并解决您的问题...

var settings = $.extend({
    title: '',
    paddingLeft: 0,
    paddingTop: 0,
    paddingRight: 0,
    paddingBottom: 0,
}, options);
于 2013-11-08T22:53:09.197 回答
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;
}
于 2013-11-09T20:42:00.203 回答