jQuery通过以下方式公开:
// Expose jQuery to the global object
window.jQuery = window.$ = jQuery;
但是有两个jQuery:
var jQuery = (function() {
// Define a local copy of jQuery
var jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery );
},
我知道这是合法的名字 - 它们来自不同的范围。
但是哪一个曝光了?
我认为它是var jQuery = function( selector, context )
,但它似乎与window.jQuery = window.$ = jQuery;
答案 0 :(得分:6)
我假设您正在查看src/core.js
和src/outro.js
。
在core.js
的顶部,有这段代码(如您的问题所示):
var jQuery = (function() {
// Define a local copy of jQuery
var jQuery = function( selector, context ) {
它本身可能看起来像是在为jQuery
分配一个新功能。但是,如果你看一下底部:
return jQuery;
})();
它正在执行它刚刚创建的函数,并将jQuery
设置为结果(函数内部的jQuery
)。
然后,在outro.js
中,有以下代码:
// Expose jQuery to the global object
window.jQuery = window.$ = jQuery;
})(window);
jQuery
此处是jQuery
顶部的core.js
。因此,通过一系列步骤,将window.jQuery
(以及window.$
)设置为这样定义的jQuery
对象:
// Define a local copy of jQuery
var jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery );
},