笔记一里记录,jQuery的总体结构如下:

(function( global, factory )
//调用factory(工厂)生成jQuery实例
factory( global );
}(typeof window !== "undefined" ? window : this, function( window, noGlobal )
//factory实现,jquery源码主体部分

那么这个生成jQuery的工厂是咋样的?

酱紫的:

function( window, noGlobal )

var jQuery = function( selector, context )//首先定义一个内部jQuery。注意,此jQuery只是一个工厂内部的变量,并非我们在外面引用的那个jQuery或$
return new jQuery.fn.init( selector, context );
};

/*然后,对这个内部jQuery对象进行各种增强、扩展*/
jQuery.fn = jQuery.prototype = {
//...
};
jQuery.extend = jQuery.fn.extend = function()
//...
};
var init = jQuery.fn.init = function( selector, context, root )
//...
};
init.prototype = jQuery.fn;
jQuery.extend({
//...
});
jQuery.fn.extend({
//...
});

if ( !noGlobal ) {//最后,将内部jQuery赋给了外部,即我们所熟知的那个“$”
window.jQuery = window.$ = jQuery;
}

return

从工厂的代码来看,$ 本质上是一个函数,因此,我们才可以这样引用:

$(".class")