Min*_*ntz 25 javascript jquery
我需要帮助理解jQuery插件创作的这种模式.有人可以为我解释一下这段简单的代码吗?
(function($) { /* Code here */ })(jQuery);
Run Code Online (Sandbox Code Playgroud)
我知道这是为了避免与使用相同$
角色的不同插件发生冲突,但不知何故无法理解它是如何工作的.参数$
与jQuery
解析的对象有什么关系?
jfr*_*d00 54
让我们打破这个:
(function($) { /* Code here */ })(jQuery);
Run Code Online (Sandbox Code Playgroud)
首先,构造:
(function() {})();
Run Code Online (Sandbox Code Playgroud)
创建一个立即执行的函数表达式(通常称为IIFE).这是一个立即执行而不是现在定义的函数,但稍后调用.它本质上是一个匿名(未命名)函数,它被定义然后立即执行.
然后,将jQuery传递给它,如下所示:
(function() {})(jQuery);
Run Code Online (Sandbox Code Playgroud)
将jQuery作为该立即执行函数的第一个参数传递.然后,将第一个参数命名为$
定义函数内部的符号,以对应于传递的第一个参数.
(function($) {})(jQuery);
Run Code Online (Sandbox Code Playgroud)
以扩展形式显示如下:
(function($) {
// you can use $ here to refer to jQuery
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
对于jQuery插件作者来说,有一件好事:
IIFE创建了一个本地函数上下文,因此您可以为插件提供"全局"变量,但实际上不是全局变量,因此不会污染或与实际的全局变量名称空间冲突.
您可以使用$
jQuery 编程,无论主机程序是否实际具有为jQuery定义的,因为您已$
在函数中本地定义.
你有什么简写这样的事情:
function anonymous_function($) {
// Code here
};
anonymous_function(jQuery);
Run Code Online (Sandbox Code Playgroud)
如您所见,它允许将$
符号用作jQuery
对函数内对象的引用.
归档时间: |
|
查看次数: |
13918 次 |
最近记录: |