我在理解$符号是jQuery函数的别名时遇到了一些麻烦,特别是在插件中。你能解释一下jQuery是如何实现这种别名的吗?它是如何将'$‘定义为jQuery函数的别名的?这是第一个问题。
其次,你能解释一下下面的代码如何/为什么在插件的定义中将'$‘映射到jQuery函数吗?为什么如果你不这样做,你的插件可能会与其他可能使用美元符号的库发生冲突?
(function( $ ){
$.fn.myPlugin = function() {
// Do your awesome plugin stuff here
};
})(jQuery);
发布于 2011-01-26 03:36:06
函数,就像javascript中的任何对象一样,可以被赋值给变量。此变量可以具有任何名称(遵循JS变量命名规则)。"$“满足命名规则,因此为简洁起见,jQuery函数别名为"$”。考虑以下示例:
var myFn = function() { alert('myFunc'); };
var $ = myFn;
$();
// alerts 'myFunc'
发布于 2011-01-26 03:32:51
它只是声明了一个变量。请参阅here
jQuery本身就是一个很大的自执行函数。这意味着它声明了一个函数,然后运行它。在函数内部,它声明了本地jQuery
对象,这是一个函数。
然后它将在它的末尾设置window.jQuery = window.$ = jQuery
这是将window.jQuery
和window.$
都设置为本地jQuery
对象。我们可以通过使全局变量成为window
对象的属性来设置它们。
现在window.jQuery
和window.$
都指向jQuery
,因为对象是通过引用传递的。
var jQuery = (function() {
var jQuery = function( selector, context ) {
...
};
...
return (window.jQuery = window.$ = jQuery);
}());
它实际声明了两次jQuery,因为在查找变量时,它不必向上查找额外的外部函数。
您可以使用两个这样的赋值,因为(var a = b) === b
正如其他人提到的那样,$
是一个合法的变量名,而函数是一级对象,因此我们可以将它们作为对象来处理,这也有助于实现这一点。
发布于 2011-01-26 03:34:13
确切的代码(来自jquery-1.4.1-vsdoc.js):
// Expose jQuery to the global object
window.jQuery = window.$ = jQuery;
https://stackoverflow.com/questions/4797956
复制相似问题