使用JQUERY也有一段时间了,也看了些源码,现在对他的总体规划做一下剖析,如有不足或错漏之处,请大家补充,互相进步:
JQUERY是OO设计出来的前端框架,它利用了prototype来做对象的继承,使得它能很轻易的扩展.
在看JQUERY源代码的时候,有两个对象困惑我很久: jquery 和 jquery.fn
那么这两个到底是什么东西呢?
我们先来看一段代码
这段代码说明了jquery.fn是一个prototype对象,那么什么是prototype对象撒?
prototype对象是javascript特有的概念,每一个function 对象都会自动生成一个prototype对象,这为我们实现方法和属性的继承提供了可能
再来看一段代码
这里对jQuery做了定义,我们接着看 jQuery.fn.init()做了什么事情
这段是我们常见的 $('#id') 的真实面目,这段主要通过选择符和上下文来查找页面元素并返回jQuery的prototype对象
这段代码表明jQuery.fn.init继承了jQuery.fn对象,也就是jQuery的prototype
这么连起来看,我们就知道,其实 jQuery 这个对象是一个函数对象,他返回了一个jQuery.fn.init 这个对象,也就是jQuery的prototype
然后利用prototype对象的特性,来实现一些扩展的功能,这样就形成了一个比较良好的框架结构