服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服务器之家 - 编程语言 - PHP教程 - jQuery 源码分析笔记

jQuery 源码分析笔记

2019-11-26 13:58php教程网 PHP教程

jQuery 最新版本1.6.1的时间戳2011年5月12日。开发未压缩版本229KB,共8937行代码。

jQuery的宗旨是Write Less, Do More。它对JavaScript的开发风格侵入性不如YUI那么强,当然也不如Dojo和YUI如此庞大。它极大的简化了JavaScript的日常开发工作,主要是DOM元素的操作(从名字Query就可以看出)。另外一个主要工作就是每个前端开发者都需要面对的浏览器兼容性。jQuery兼容所有主流浏览器的大部分版本,从万恶的IE6开始直到Firefox,Chrome等现代浏览器。除了居于核心的一小部分代码之外,剩下的jQuery都是松散的函数,扩展性很强。http://plugins.jquery.com上有成千上万的jQuery插件,你需要的功能几乎都有对应的jQuery插件,而且不止一个。 
jQuery代码的头部是License声明。采用了GPLv2和MIT双协议。而在jQuery声明下是另一个项目的声明:Sizzle。这是jQuery作者另外的一个开源项目,在MIT、BSD和GPL下发布。它是一个独立的selector实现(pure-JavaScript CSS selector engine),可以独立使用。它的压缩版本只有3KB多一点,号称效率最高的选择器实现。jQuery从1.3开始使用Sizzle代替了原来的selector实现。 
JS代码中有大量的()和{},这里使用的是Vim阅读,因为%命令可以快速的找到匹配的括号。 
代码总体结构和变量 
jQuery的代码整体上就是一个匿名函数调用: 

复制代码代码如下:


(function (window, undefined) { 
// ... 
})(window); 


这是为了避免污染全局对象,同时也可以方便的管理执行上下文。这个技巧在JS代码中经常见到,在jQuery代码中也很常见。比如,在jQuery和其他JS库同时使用时,$符号可能已经被使用了。为了仍然使用$符号: 

复制代码代码如下:


(function ($) { 
// $("...")... 照常使用$ 
})(jQuery); 


在这里传入真正的jQuery对象。 
下面进入真正的实现部分,首先是$,也就是jQuery对象的声明,其中最基本的两个成员也列出来了: 

复制代码代码如下:


var jQuery = (function() { 
var jQuery = function(selector, context) { 
// 真正的初始化函数 
return new jQuery.fn.init(selector, context, rootjQuery); 
}, 
// 一大堆变量声明 
// fn是主要的函数实现点,也是jQuery插件的起点。实际上就是JS原型 
jQuery.fn = jQuery.prototype = { 
}; 
// 一个扩展对象用的函数,可以动态地往对象上加成员。以后往jQuery里面加成员都是用extend函数完成的。 
jQuery.extend = jQuery.fn.extend = function() { 
}; 
// ... 
return jQuery; 
})(); 


jQuery对象是核心对象,所有$(...)得到的都是jQuery对象,除了少部分直接实现在jQuery下的Utility函数之外,大部分函数都是用extend方法加到jQuery对象里的。

延伸 · 阅读

精彩推荐
  • PHP教程PHP操作xml代码

    PHP操作xml代码

    下面的代码是获取图片新闻列表的函数代码,里面有操作xml文件的核心代码,需要的朋友可以参考下。 ...

    php教程网2692019-11-01
  • PHP教程PHP getName()函数讲解

    PHP getName()函数讲解

    今天小编就为大家分享一篇关于PHP getName()函数讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...

    php参考手册3362019-06-22
  • PHP教程Laravel5.5以下版本中如何自定义日志行为详解

    Laravel5.5以下版本中如何自定义日志行为详解

    这篇文章主要给大家介绍了关于Laravel5.5以下版本中如何自定义日志行为的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的...

    麦索2502019-09-17
  • PHP教程PHP hebrev()函数用法讲解

    PHP hebrev()函数用法讲解

    今天小编就为大家分享一篇关于PHP hebrev()函数用法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看...

    php参考手册1902019-06-11
  • PHP教程PHP面向对象五大原则之接口隔离原则(ISP)详解

    PHP面向对象五大原则之接口隔离原则(ISP)详解

    这篇文章主要介绍了PHP面向对象接口隔离原则(ISP),详细分析了接口隔离的概念、原理、使用方法及相关操作注意事项,需要的朋友可以参考下 ...

    雪山飞猪3662019-10-13
  • PHP教程PHP中使用cURL实现Get和Post请求的方法

    PHP中使用cURL实现Get和Post请求的方法

    PHP中使用cURL实现Get和Post请求的方法,需要的朋友可以参考一下...

    脚本之家2552019-05-29
  • PHP教程浅谈PHP匿名函数和闭包

    浅谈PHP匿名函数和闭包

    这篇文章主要介绍了PHP匿名函数和闭包,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编...

    itbsl4482019-06-03
  • PHP教程PHP的mysqli_select_db()函数讲解

    PHP的mysqli_select_db()函数讲解

    今天小编就为大家分享一篇关于PHP的mysqli_select_db()函数讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来...

    php参考手册1872019-06-29