gpt4 book ai didi

jQuery 插件选项 : Extend before or inside this. 每个 block ?

转载 作者:行者123 更新时间:2023-12-01 01:19:53 24 4
gpt4 key购买 nike

我正在查看插件创作文章 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 block 内?我的第一直觉是将其写为:

$.fn.tooltip = function( options ) {  
var settings = {
'location' : 'top',
'background-color' : 'blue'
};
$.extend( settings, options || {} );

return this.each(function() {

所以我将 .extend 调用移到了 return 之上(并用 || {} 替换了丑陋的 if - 我认为这有意义吗?)。

这里有什么我没看到的吗?也许有任何奇怪的闭包相关的东西?例如:全局修改设置还是仅在该调用上修改设置? (编辑:显然我不是 - http://jsfiddle.net/fVSDH/)

最佳答案

你是对的。

为 jQuery 集合中的每个元素扩展 settings 对象没有任何意义。

还有你的|| {} 非常标准,经过实践检验,效果很好。

var settings = $.extend({
'location': 'top',
'background-color': 'blue'
}, options || {});

这是可以在此处进行的另一项优化。

关于jQuery 插件选项 : Extend before or inside this. 每个 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4046386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com