jQuery暴露了什么?

DrS*_*ove 0 javascript jquery

jQuery通过以下方式公开:

// Expose jQuery to the global object
window.jQuery = window.$ = jQuery;
Run Code Online (Sandbox Code Playgroud)

但是有两个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 );
    },
Run Code Online (Sandbox Code Playgroud)

我知道它是合法的名字 - 它们来自不同的范围.但是哪一个曝光了?我想它是,var jQuery = function( selector, context )但似乎它的范围不同 window.jQuery = window.$ = jQuery;

ick*_*fay 6

我假设你正在寻找src/core.jssrc/outro.js.

在顶部core.js,有这个代码(如你的问题所示):

var jQuery = (function() {

// Define a local copy of jQuery
var jQuery = function( selector, context ) {
Run Code Online (Sandbox Code Playgroud)

这本身就可能看起来像是在分配一个新功能jQuery.但是,如果你看一下底部:

return jQuery;

})();
Run Code Online (Sandbox Code Playgroud)

它正在执行它刚刚创建的函数,并设置jQuery为结果(jQuery来自函数内部).

然后,在outro.js,有这个代码:

// Expose jQuery to the global object
window.jQuery = window.$ = jQuery;
})(window);
Run Code Online (Sandbox Code Playgroud)

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 );
    },
Run Code Online (Sandbox Code Playgroud)