2011-09-24 42 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