Jquery 插件语法解释?

问题描述 投票:0回答:2

我见过一些 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
,并且它仍然仅对本地范围可见......所以?

你能给我解释一下吗?

他从这次关闭中赚到了什么?

我会理解,如果他向函数发送

$
符号......但他没有

javascript jquery jquery-plugins iife
2个回答
2
投票

我认为添加了闭包,以便变量

originalAddClassMethod
不在全局范围(或父范围)中定义,并且对插件是私有的。

你说:

我可以在普通 func 中使用带有 var 的私有成员,并且它仍然仅对本地范围可见。

这正是这里所做的:该函数是匿名的,但仍然“正常”。


2
投票

如果您在函数外部使用

var
,您仍然会创建一个全局变量(因为这是您所在的范围)。因此,您需要将所有代码包装在一个函数中以获得新的作用域。

事实上,他没有使用该函数来确保

$
指向
jQuery
,而是一直使用
jQuery
,这只是意味着他在某种程度上是受虐狂,并且想要可读性较差的代码。 ;)

© www.soinside.com 2019 - 2024. All rights reserved.