(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);