代码清单 2-1 构造 jQuery 对象模块的总体源码结构
16 (function( window, undefined ) { // 自调用匿名函数,当jQuery初始化时,这个自调用匿名函数包含的所有JavaScript代码将被执行。
// 构造 jQuery 对象
22 var jQuery = (function() { // 定义变量jQuery,自调用匿名函数返回jQuery构造函数并赋值给变量jQuery
25 var jQuery = function( selector, context ) { // 定义变量jQuery,它的值是jQuery构造函数,955行返回并赋值给第22行的变量jQuery,这两个jQuery变量是等价的,都指向jQuery构造函数
27 return new jQuery.fn.init( selector, context, rootjQuery ); // 调用jQuery构造函数时,实际返回的是jQuery.fn.init()的实例。
28 },
// 一堆局部变量声明
97 jQuery.fn = jQuery.prototype = { // 构造函数jQuery()的原型对象
98 constructor: jQuery, // 覆盖原型对象的属性constructor,使它指向jQuery构造函数
99 init: function( selector, context, rootjQuery ) { ... }, // 定义原型方法jQuery.fn.init,负责解析参数selector和context的类型并执行相应的查找
// 一堆原型属性和方法
319 };
322 jQuery.fn.init.prototype = jQuery.fn; // 用jQuery构造函数的原型对象jQuery.fn覆盖了jQuery.fn.init()的原型对象。
324 jQuery.extend = jQuery.fn.extend = function() { ... }; // 定义了jQuery.extend() 和 jQuery.fn.extend(),用于合并两个或多个对象的属性到第一个对象
388 jQuery.extend({ // 执行jQuery.extend()在jQuery构造函数上定义了一堆静态属性和方法
// 一堆静态属性和方法
892 });
955 return jQuery;
957 })();
// 省略其他模块的代码
9246 window.jQuery = window.$ = jQuery; // jQuery变量暴露给全局作用域window,并定义了别名$
9266 })( window );