jQuery插件扩展顺序

时间:2016-04-05 10:40:02

标签: javascript jquery design-patterns jquery-plugins jquery-boilerplate

我正在使用A Highly Configurable And Mutable Plugin Pattern编写一个jQuery插件(到现在为止,我已经创建了一个带有这些设计模式的“完整”jQuery插件)

现在,我想创建一个插件,其中的选项可以扩展为数据属性,如:

<div class="my-wrapper" data-option="myoption" [...]>

或作为集合:

$(document).ready(function(){
    $('.my-wrapper').myPlugin({
        option: 'another option',
        [...]
    });
});

正如您所看到的,这是一个与here所描述的配置略有不同的配置(您需要向下滚动一下才能找到我正在使用的模式) 这是$.extend代码行:

$.extend( {}, this.defaults, this.options, this.metadata );

但如果缺少data-option会怎样?很简单option === undefined,因为我将this.metadata声明为

this.metadata: {
    option: this.$element.data('option')
} 

我该如何避免这种情况?

我应该“检查”this.metadata以删除未定义的属性,或只是将$.extend行更改为

$.extend( {}, this.defaults, this.metadata, this.options );

或者,例如,抛出“缺少选项”之类的异常?我认为这个问题可能有太多答案,但我只是想避免在用户没有将其设置为数据属性时,缺少或未定义“默认”选项。

谢谢大家!

0 个答案:

没有答案