Jquery插件语法解释?

发布于 2024-12-18 11:27:13 字数 669 浏览 2 评论 0原文

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

你能向我解释一下吗?

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

我会理解,如果他将 $ 符号发送给函数......但他没有

Ive seen some plugin code in jQuery

one of them is to overload the addClass method in jQuery (example : when you addClass - call 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();

    }
})();

the thing which i dont understand :

Why did he create a closure ?

I could use a private members inside a normal func with the var and it still be visible to the local scope only.....so ?

can you explain that to me ?

what does he earn from that closure ?

I would have understand that if he sent the $ sign to the function ...but he didnt

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

べ映画 2024-12-25 11:27:14

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

事实上,他没有使用函数来确保 $ 指向 jQuery 而是一直使用 jQuery ,这只能说明他在某种程度上是受虐狂并且想要可读性较差的代码。 ;)

If you use var outside of a function you still create a global variable (because that's the scope you are in). So you need to wrap all code in a function to get a new scope.

The fact that he did not use the function to ensure $ points to jQuery but used jQuery all the time instead just means that he was somehow masochistic and wanted less-readable code. ;)

倾城月光淡如水﹏ 2024-12-25 11:27:13

我认为添加了闭包,以便变量 originalAddClassMethod 不在全局作用域(或父作用域)中定义,并且对插件来说是私有的。

你说:

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

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

I think the closure was added so that the variable originalAddClassMethod isn't defined in the global scope (or parent scope), and is private to the plugin.

You said:

I could use a private members inside a normal func with the var and it still be visible to the local scope only.

This is exactly what was done here: The function is anonymous, but still "normal".

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文