我正在查看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/)
最佳答案
你是对的。
为jQuery集合中的每个元素扩展settings
对象没有任何意义。
另外,您的|| {}
是相当标准的,经过战斗验证的并且很好。
var settings = $.extend({
'location': 'top',
'background-color': 'blue'
}, options || {});
是可以在这里进行的另一个优化。