jQuery学习笔记之总体架构


Posted in Javascript onJune 03, 2014

先来看代码:

(function (window, undefined) {
            //构建jQuery对象
            var document = window.document,
                navigator = window.navigator,
                location = window.location;
            var jQuery = (function () {
                var jQuery = function (selector, context) {
                    return new jQuery.fn.init(selector, context, rootjQuery);
                },
                _jQuery = window.jQuery;
                //............................
                //............................                  
                return jQuery; //981行
            })();
            //工具方法:Utilities;我在jQuery源码中没有发现是哪一块,如果有发现的.可以告诉我一下
            //回调函数列表 Callbacks
            //异步队列 Deferred
            //浏览器功能测试 Support
            //数据缓存  Cache
            //属性操作  Attributes
            //队列 Queue
            //事件系统 Event
            //选择器 Sizzle
            //Dom遍历 Traversing
            //Dom操作 Manipulation
            //样式操作 CSS
            //异步请求 Ajax
            //动画 Effects
            //坐标 Offset. 尺寸Dimensions
            window.jQuery = window.$ = jQuery;
        })(window);

1.这个就是jQuery源码的结构了.个人觉得还是相当的清晰和有条理的.

2.jQuery的整个最外层就是一个自调用的匿名函数,这样就可以创建一个闭包.该闭包中的各种变量,函数就不会和闭包外的变量和函数发生影响,确保了jQuery的独立性,安全性.

3最后一句代码:window.jQuery = window.$ = jQuery;则是定义了一个全局变量jQuery和$.并且吧私有变量jQuery的引用赋给了这个全局变量.

4.将最大的对象window当做实参传递到函数中,使得window变成了局部变量,可以大大的缩短查找window的查找时间,同样节省资源.

5,第二个参数undefined,是一个形参,在实际执行的时候,没有获得参数赋值,那么系统就会给他自动赋值成undefined.这样在jQuery的闭包中确保了undefined值的真时性,因为undefined在jQuery的外面有可能被篡改掉.尽管这个篡改的结果,各种浏览器不一样.

Javascript 相关文章推荐
基于jquery的checkbox下拉框插件代码
Jun 25 Javascript
jquery动态加载select下拉框示例代码
Dec 10 Javascript
node.js中的fs.futimes方法使用说明
Dec 17 Javascript
layui 表单标签的校验方法
Sep 04 Javascript
浅谈Three.js截图并下载的大坑
Nov 01 Javascript
Vue前端项目部署IIS的实现
Jan 06 Javascript
vue2路由基本用法实例分析
Mar 06 Javascript
jQuery实时统计输入框字数及限制
Jun 24 jQuery
Vue props中Object和Array设置默认值操作
Jul 30 Javascript
在vue中axios设置timeout超时的操作
Sep 04 Javascript
vue-admin-template配置快捷导航的代码(标签导航栏)
Sep 04 Javascript
类和原型的设计模式之复制与委托差异
Jul 07 Javascript
jquery控制select的text/value值为选中状态
Jun 03 #Javascript
Javascript中浮点数相乘的一个解决方法
Jun 03 #Javascript
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
Jun 02 #Javascript
js判断当前浏览器类型,判断IE浏览器方法
Jun 02 #Javascript
php+js实现倒计时功能
Jun 02 #Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
Jun 01 #Javascript
node.js入门教程
Jun 01 #Javascript
You might like
深思 PHP 数组遍历的差异(array_diff 的实现)
2008/03/23 PHP
PHP 翻页 实例代码
2009/08/07 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
2016/04/02 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
索趣科技的答案
2007/02/07 Javascript
window.open的页面如何刷新(父页面)上层页面
2012/12/28 Javascript
JS Date函数整理方便使用
2013/10/23 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
JavaScript日期类型的一些用法介绍
2015/03/02 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
2015/07/27 Javascript
jquery append 动态添加的元素事件on 不起作用的解决方案
2015/07/30 Javascript
javascript发送短信验证码实现代码
2015/11/12 Javascript
javascript实现加载xml文件的方法
2015/11/24 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
分享一道关于闭包、bind和this的面试题
2017/02/20 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
2种在vue项目中使用百度地图的简单方法
2018/09/28 Javascript
JS实现的排列组合算法示例
2019/07/16 Javascript
VUE-ElementUI 自定义Loading图操作
2020/11/11 Javascript
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
python对json的相关操作实例详解
2017/01/04 Python
Python中反射和描述器总结
2018/09/23 Python
详解PANDAS 数据合并与重塑(join/merge篇)
2019/07/09 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
2020/02/25 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
2020/09/03 Python
python实现简单文件读写函数
2021/02/25 Python
美国隐形眼镜零售商:LensPure
2019/03/10 全球购物
销售辞职报告范文
2014/01/12 职场文书
机械操作工岗位职责
2014/08/08 职场文书
异地年检委托书范本
2014/09/24 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
2015年村级财务管理制度
2015/08/04 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书
2019年教师节祝福语精选,给老师送上真诚的祝福
2019/09/09 职场文书
redis 查看所有的key方式
2021/05/07 Redis