jQuery 源码分析笔记
Analisis kod sumber
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对象里的。
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas
R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu
By 尊渡假赌尊渡假赌尊渡假赌
Assassin's Creed Shadows: Penyelesaian Riddle Seashell
2 minggu yang lalu
By DDD
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu
By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu
By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas
Tutorial CakePHP
1378
52

