版本:1.7.1

 总体架构:

 1.执行jQuery(selector, context)方法,在方法内部实例化函数jQuery.fn.init,得到一个jquery对象。

 2.函数jQuery.fn.init属于jQuery原型上的方法。

 3.函数jQuery.fn.init的原型指向函数jQuery的原型。

 4.因此,生成的jquery对象继承了函数jQuery原型上的属性和方法。

 5.函数jQuery有自己的静态方法,直接使用 jQuery.方法名 来调用。

 6.此外,可通过jQuery.extend方法扩展jQuery的静态方法,通过使用jQuery.fn.extend方法扩展jquery对象的方法。

如图1所示,函数jQuery拥有原型jQuery.prototype,原型jQuery.prototype拥有方法jQuery.prototype.init,函数jQuery.prototype.init拥有原型jQuery.prototype.init.prototype,原型jQuery.prototype.init.prototype指向原型jQuery.prototype。实例化函数jQuery.prototype.init得到一个jquery对象,jquery对象继承了函数jQuery.prototype.init的原型jQuery.prototype.init.prototype的属性和方法,即原型jQuery.prototype的属性和方法。

jquery整体架构 jquery结构_jquery

图1 jquery总体架构

代码如下:

(function(window,undefined){
    var jQuery = (function(){
        var jQuery = function( selector, context ){
            return new jQuery.fn.init( selector, context, rootjQuery );
        };

        jQuery.fn = jQuery.prototype = {
            constructor: jQuery,
            init: function( selector, context, rootjQuery ){
            }
        };
        
        jQuery.fn.init.prototype = jQuery.fn;

        return jQuery;
    })();
})(window);