Jquery选择器 $实现原理


Posted in Javascript onDecember 02, 2009

但由于工作的原因,很久不曾做过网站项目了,也没有时间去好好研究Jquery的源码,这个疑问也一直没有得到解决了, 今天,空闲之余,打开Jquery的源码看看,才明天它实现的原理,原来在加入jquery的js这个文件时,实际上是执行了一个函数,在这个函数里己经初始化了$和JQuery变量, 实现这个功能源码如下(代码已删减和更改,并不影响说明实现原理):

(function() { 
var 
// Will speed up references to window, and allows munging its name. 
window = this, 
// Will speed up references to undefined, and allows munging its name. 
undefined, 
// Map over jQuery in case of overwrite 
_jQuery = window.jQuery, 
// Map over the $ in case of overwrite 
_$ = window.$, 
jQuery = window.jQuery = window.$ = function(selector, context) { 
// The jQuery object is actually just the init constructor 'enhanced' 
return new jQuery.fn.init(selector, context); 
}, 
// A simple way to check for HTML strings or ID strings 
// (both of which we optimize for) 
quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/, 
// Is it a simple selector 
isSimple = /^.[^:#\[\.,]*$/; 
jQuery.fn = jQuery.prototype = { 
init: function(selector, context) { 
// Make sure that a selection was provided 
// Make sure that a selection was provided 
selector = selector || document; 
this[0] = selector; 
this.length = 1; 
this.context = selector; 
return this; 
}, 
show:function() { 
alert("this.show"); 
}, 
// Start with an empty selector 
selector: "", 
// The current version of jQuery being used 
jquery: "1.3.2" 
}; 
jQuery.fn.init.prototype = jQuery.fn; 
})(); 
function test(src){ 
alert($(src)); 
$(src).show();

从代码里我们可以看到有这样一个函数执行了(funtion(){})();

var window = this;
_jQuery = window.jQuery;
_$ = window.$;

这几句代码应该是声明jQuery和$变量,至于为什么能这样子用我还没弄明白,等待高人解决!!

但我认为这并没关系,因为最重要的是下面这段代码:

jQuery = window.jQuery = window.$ = function(selector, context) {
return new jQuery.fn.init(selector, context);
};

可以看出创建jQuery.fn.init这样一个函数返回给$, 这样是可以使用$实例了,但还不能访问jQuery.fn里的方法,因此需要加上后面这句:

jQuery.fn.init.prototype = jQuery.fn;

实现了这些, Jquery中的其他功能就很好理解了, 无非是添prototype或extend中的方法了.

Javascript 相关文章推荐
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
Jan 03 Javascript
CodeMirror2 IE7/IE8 下面未知运行时错误的解决方法
Mar 29 Javascript
用javascript模仿ie的自动完成类似自动完成功的表单
Dec 12 Javascript
jquery text(),val(),html()方法区别总结
Nov 04 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
Jul 13 Javascript
jQuery实现的简单分页示例
Jun 01 Javascript
JavaScript DOM节点操作方法总结
Aug 23 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
Sep 04 Javascript
ionic选择多张图片上传的示例代码
Oct 10 Javascript
浅谈Node 调试工具入门教程
Mar 20 Javascript
对vue中的事件穿透与禁止穿透实例详解
Oct 28 Javascript
Node如何后台数据库使用增删改查功能
Nov 21 Javascript
js 表格隔行颜色
Dec 02 #Javascript
让FireFox支持innerText的实现代码
Dec 01 #Javascript
JavaScript 直接操作本地文件的实现代码
Dec 01 #Javascript
js 变量类型转换常用函数与代码[比较全]
Dec 01 #Javascript
Jquery 快速构建可拖曳的购物车DragDrop
Nov 30 #Javascript
JavaScript 学习笔记 Black.Caffeine 09.11.28
Nov 30 #Javascript
Ruffy javascript 学习笔记
Nov 30 #Javascript
You might like
一个简单的MySQL数据浏览器
2006/10/09 PHP
PHP 获取目录下的图片并随机显示的代码
2009/12/28 PHP
Yii2实现ajax上传图片插件用法
2016/04/28 PHP
PHP 爬取网页的主要方法
2018/07/13 PHP
PHP的PDO预处理语句与存储过程
2019/01/27 PHP
javascript新手语法小结
2008/06/15 Javascript
js 居中漂浮广告
2010/03/21 Javascript
Jquery升级新版本后选择器的语法问题
2010/06/02 Javascript
JavaScript聚焦于第一个字段的代码
2010/10/15 Javascript
javascript判断ie浏览器6/7版本加载不同样式表的实现代码
2011/12/26 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
B/S模式项目中常用的javascript汇总
2013/12/17 Javascript
jQuery CSS()方法改变现有的CSS样式表
2014/09/09 Javascript
Bootstrap菜单按钮及导航实例解析
2016/09/09 Javascript
bootstrap输入框组使用方法
2017/02/07 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
ECMAscript 变量作用域总结概括
2017/08/18 Javascript
jquery中有哪些api jQuery主要API
2017/11/20 jQuery
通过函数作用域和块级作用域看javascript的作用域链
2018/08/05 Javascript
微信小程序实现日历效果
2018/12/28 Javascript
js 判断当前时间是否处于某个一个时间段内
2019/09/19 Javascript
python实现逻辑回归的方法示例
2017/05/02 Python
基于Python的XSS测试工具XSStrike使用方法
2017/07/29 Python
Python标准库之itertools库的使用方法
2017/09/07 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
2018/01/04 Python
Python3之文件读写操作的实例讲解
2018/01/23 Python
Python 中字符串拼接的多种方法
2018/07/30 Python
检测tensorflow是否使用gpu进行计算的方式
2020/02/03 Python
如何在pycharm中安装第三方包
2020/10/27 Python
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
文明家庭先进事迹材
2014/01/27 职场文书
素食餐饮项目创业计划书
2014/02/02 职场文书
小学生节约用水倡议书
2014/05/15 职场文书
重点工程汇报材料
2014/08/27 职场文书
音乐教育专业自荐信
2014/09/18 职场文书
教育见习报告范文
2014/11/03 职场文书