我正在使用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 );
或者,例如,抛出“缺少选项”之类的异常?我认为这个问题可能有太多答案,但我只是想避免在用户没有将其设置为数据属性时,缺少或未定义“默认”选项。
谢谢大家!