Javascript jQuery编写和关闭
我正在读一篇关于写一个符号的文章,有一节讨论了如何保存美元符号符号,这样它就不会与其他使用它的库发生冲突 它说: 将jQuery传递给自执行函数是最佳实践 (闭包)将其映射到美元符号,这样它就不会被覆盖 由另一个库在其执行范围内执行 他们是如何做到这一点的:Javascript jQuery编写和关闭,javascript,jquery,Javascript,Jquery,我正在读一篇关于写一个符号的文章,有一节讨论了如何保存美元符号符号,这样它就不会与其他使用它的库发生冲突 它说: 将jQuery传递给自执行函数是最佳实践 (闭包)将其映射到美元符号,这样它就不会被覆盖 由另一个库在其执行范围内执行 他们是如何做到这一点的: (function( $ ) { $.fn.myPlugin = function() { // Do your awesome plugin stuff here }; })( jQuery ); 我试图理解他们在说
(function( $ ) {
$.fn.myPlugin = function() {
// Do your awesome plugin stuff here
};
})( jQuery );
我试图理解他们在说什么,以及这段代码在说什么。下面的代码是如何计算的
函数($){}
是否执行并获取传递给它的jQuery
对象
jQuery对象是否成为$ 是<代码>函数($){…}通过传递给它的jQuery
对象执行。$
参数隐藏父作用域的$
变量(如果有),并为其提供jQuery
变量的值,但仅针对该代码块
您希望这样做的原因是,$
可能会被其他库使用(比如,),但您仍然希望能够在插件中使用$
缩写来表示jQuery
。通过创建一个以$
为参数的函数,并以jQuery
作为该参数执行该函数,您可以在该函数内部使用$
而不是jQuery
,而不必像原型那样覆盖函数外部的$
<代码>函数($){…}通过传递给它的jQuery
对象执行。$
参数隐藏父作用域的$
变量(如果有),并为其提供jQuery
变量的值,但仅针对该代码块
您希望这样做的原因是,
$
可能会被其他库使用(比如,),但您仍然希望能够在插件中使用$
缩写来表示jQuery
。通过创建一个以$
为参数的函数,并以jQuery
为参数执行该函数,您可以在该函数内部使用$
而不是jQuery
,而不必像原型那样覆盖函数外部的$
function add_my_plugin_to_fn($) {
$.fn.myPlugin = function() {
}
}
add_my_plugin_to_fn(jQuery);
或
所有这些都将向jQuery的fn.myPlugin属性添加一个函数。我们使用$的唯一原因是,jQuery用户喜欢使用单个字母“$”作为函数名。它可以是jQuery.fn.myplugin
或jq.fn.myplugin
或\uuuq.fn.myplugin
这可以让你摆脱这种情况
my_awesome_javascipt_.js
function $(add_to_this) {
return add_to_this + 1;
}
jQuery.js
window.jQuery = //all the jquery stuff
//sees that window.$ already has a function in it and leaves it alone
my_jquery_plugin.js
$.fn.myplugin; //this doesn't exist because $ is a function from the first file
//you should have used jQuery.fn.myplugin. But that is a lot to type out. Doing the
立即调用函数技巧将强制使用具有文件范围的变量“$”
是的,语言真的应该为你做到这一点。这是一种愚蠢的机制,默认情况下是全球性的。如果您想要解决这个问题,请查看哪些工具可以帮助您编写javascript,而不会出现许多基本错误,这些错误可以写成:
function add_my_plugin_to_fn($) {
$.fn.myPlugin = function() {
}
}
add_my_plugin_to_fn(jQuery);
或
所有这些都将向jQuery的fn.myPlugin属性添加一个函数。我们使用$的唯一原因是,jQuery用户喜欢使用单个字母“$”作为函数名。它可以是jQuery.fn.myplugin
或jq.fn.myplugin
或\uuuq.fn.myplugin
这可以让你摆脱这种情况
my_awesome_javascipt_.js
function $(add_to_this) {
return add_to_this + 1;
}
jQuery.js
window.jQuery = //all the jquery stuff
//sees that window.$ already has a function in it and leaves it alone
my_jquery_plugin.js
$.fn.myplugin; //this doesn't exist because $ is a function from the first file
//you should have used jQuery.fn.myplugin. But that is a lot to type out. Doing the
立即调用函数技巧将强制使用具有文件范围的变量“$”
是的,语言真的应该为你做到这一点。这是一种愚蠢的机制,默认情况下是全球性的。若你们想要解决这个问题,看看哪一个可以帮助你们在写javascript时避免很多基本错误