我见过一些 jQuery 插件代码
其中之一是重载 jQuery 中的 addClass 方法(示例:当你 addClass 时 - 调用 myfunction ())。
(function(){
var originalAddClassMethod = jQuery.fn.addClass;
jQuery.fn.addClass = function(){
// Execute the original method.
originalAddClassMethod.apply( this, arguments );
// call your function
// this gets called everytime you use the addClass method
myfunction();
}
})();
我不明白的事情:
他为什么要创建一个闭包?
我可以在普通函数中使用私有成员与
var
,并且它仍然仅对本地范围可见......所以?
你能给我解释一下吗?
他从这次关闭中赚到了什么?
我会理解,如果他向函数发送
$
符号......但他没有
我认为添加了闭包,以便变量
originalAddClassMethod
不在全局范围(或父范围)中定义,并且对插件是私有的。
你说:
我可以在普通 func 中使用带有 var 的私有成员,并且它仍然仅对本地范围可见。
这正是这里所做的:该函数是匿名的,但仍然“正常”。
如果您在函数外部使用
var
,您仍然会创建一个全局变量(因为这是您所在的范围)。因此,您需要将所有代码包装在一个函数中以获得新的作用域。
事实上,他没有使用该函数来确保
$
指向 jQuery
,而是一直使用 jQuery
,这只是意味着他在某种程度上是受虐狂,并且想要可读性较差的代码。 ;)