构建jQuery对象的源代码分析--转了
(function (window, undefined) { // 构造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); }; //把jQuery的原型 prototype赋给jQuery.fn jQuery.fn = jQuery.prototype = { constructor : jQuery, /** * selector有以下7种分支情况: DOM元素 body(优化) 字符串:HTML标签、HTML字符串、#id、选择器表达式 函数(作为ready回调函数) 最后返回伪数组 */ init : function (selector, context, rootjQuery) { //后期会详细分析此处的实现 } }; // Give the init function the jQuery prototype for later instantiation //把jQuery.fn赋值到jQuery.fn.init.prototype,这样init指向的原型prototype也具有了jQuery.fn的功能 jQuery.fn.init.prototype = jQuery.fn; //jQuery的继承实现 jQuery.extend = jQuery.fn.extend = function () {}; // 在jQuery上扩展静态方法 jQuery.extend({ // ready bindReady // isPlainObject isEmptyObject // parseJSON parseXML // globalEval // each makeArray inArray merge grep map // proxy // access // uaMatch // sub // browser }); // 到这里,jQuery对象构造完成,后边的代码都是对jQuery或jQuery对象的扩展 return jQuery; })(); // Expose jQuery to the global object //设置jQuery 和 $为window全局变量 window.jQuery = window.$ = jQuery; })(window);