jQuery源码分析
大家都知道jQuery的宗旨就是以最少的代码获得高效率的成果,其核心就是选择器。
我们来看看jQuery对象是如何生成的。
首先我们了解它的书写模式,我们可以看到大部分的插件都是类似这种形式书写的
(function(window){
//do something
})(window)
为什么要这样写呢?
1,这是一个自调用匿名函数,第一个括号创建匿名函数,第二个括号立即执行。
2,形成自己的命名空间(类似于java中的包管理),该命名空间中的变量和方法不会与全局的命名空间
一,总体架构
(function( window, undefined ) {
// 构造jQuery对象
var jQuery = function( selector, context ) {
returnnew jQuery.fn.init( selector, context, rootjQuery );
}
//构造jQuery对象原型(既js对象的复制引用)
jQuery.fn = jQuery.prototype = {
init: function(selector, context, rootjQuery){},
......
}
jQuey.fn.init.prototype = jQuery.fn;
window.jQuery = window.$ = jQuery;
})(window);
jQuery对象通过工厂模式创建,既哪来就可以使用不需要使用new创建,但简单的return new object()会产生重复调用的错误,所以returnnew jQuery.fn.init( selector, context, rootjQuery )这种方式返回对象。
jQuey.fn.init.prototype = jQuery.fn该代码的关键是将this指针指向jQuery.fn下的属性和方法
最后将jQuery对象挂载在window对象下。
至此jQuery对象创建过程大致结束。小弟第一次写博客文章,有不对之处望指正。下一篇幅将讲解prototype的知识,再接着后面的话题继续解析jQuery