2011-09-24 65 views
0

jQuery是通過暴露:什麼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;

回答

6

我假設你正在尋找src/core.jssrc/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這裏是從core.js頂部jQuery。因此,通過一系列的步驟,它是設置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); 
    }, 
+0

謝謝!這就說得通了!我實際上是看着http://code.jquery.com/jquery-1.6.4.js – DrStrangeLove