我正在查看http://docs.jquery.com/Plugins/Authoring上的插件编写文章,并在默认值和选项部分中看到了此示例:
$.fn.tooltip = function( options ) {
var settings = {
'location' : 'top',
'background-color' : 'blue'
};
return this.each(function() {
// If options exist, lets merge them
// with our default settings
if ( options ) {
$.extend( settings, options );
}
我不完全理解为什么.extend调用在this.each块内?我的第一个直觉就是把它写成:
$.fn.tooltip = function( options ) {
var settings = {
'location' : 'top',
'background-color' : 'blue'
};
$.extend( settings, options || {} );
return this.each(function() {
所以我将.extend调用移到了返回上方(并用|| {}替换了丑陋的调用 - 我认为这有意义吗?)。
有什么我没看到的吗?任何奇怪的关闭相关的东西可能吗?如:在全局修改设置与仅在该呼叫上修改? (编辑:显然我不是 - http://jsfiddle.net/fVSDH/)
答案 0 :(得分:3)
为jQuery集合中的每个元素扩展settings
对象没有任何意义。
此外,您的|| {}
非常标准,经过实战验证并且很好。
var settings = $.extend({
'location': 'top',
'background-color': 'blue'
}, options || {});
可以在这里进行另一项优化。