我看到jQuery中的一些插件代码jquery插件语法解释?
其中之一是重载jQuery中的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
的正常功能中使用私人成员,它仍然只对本地范围可见..... so?
你能解释一下吗?
他从那个关闭中赚了多少钱?
我会明白,如果他送的$
标志的功能......但他没有
我认为这种语法的主要目标是使用里面的$符号..(他没有)...不是? –
@Royi - 你说得对,'(function($){})(jQuery);'在插件中很常见,但是这里的代码并没有使用'$'变量,所以它并不是真的需要。 – Kobi
@RoyiNamir:该语法通常用于两个原因; a)确保'$'指向jQuery,并且b)提供一个可以定义私有变量的范围。在这种情况下,正如\ Kobi指出的那样,作者对(b)使用闭包;没有定义闭包1)其他第三方代码可能会覆盖我们的'originalAddClassMethod'声明,或者我们可以覆盖它们。 – Matt