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 相关文章推荐
script的async属性以非阻塞的模式加载脚本
Jan 15 Javascript
js实现ifram取父窗口URL地址的方法
Feb 09 Javascript
kindeditor修复会替换script内容的问题
Apr 03 Javascript
jQuery插件kinMaxShow扩展效果用法实例
May 04 Javascript
JS实现字符串转日期并比较大小实例分析
Dec 09 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
Oct 11 Javascript
取消Bootstrap的dropdown-menu点击默认关闭事件方法
Aug 10 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
Jul 21 Javascript
vue 输入电话号码自动按3-4-4分割功能的实现代码
Apr 30 Javascript
Vue中key的作用示例代码详解
Jun 10 Javascript
vue中提示$index is not defined错误的解决方式
Sep 02 Javascript
vue打开新窗口并实现传参的图文实例
Mar 04 Vue.js
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做的端口嗅探器--可以指定网站和端口
2006/10/09 PHP
php中chdir()函数用法实例
2014/11/13 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
2016/05/26 PHP
Yii框架中jquery表单验证插件用法示例
2016/10/18 PHP
php解析base64数据生成图片的方法
2016/12/06 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
2019/12/02 PHP
javascript function调用时的参数检测常用办法
2010/02/26 Javascript
javascript 闭包
2011/09/15 Javascript
使用js 设置url参数
2013/07/08 Javascript
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
js怎么覆盖原有方法实现重写
2014/09/04 Javascript
IE8中动态创建script标签onload无效的解决方法
2014/12/22 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
jQuery+ajax实现无刷新级联菜单示例
2015/05/21 Javascript
JQuery实现简单的图片滑动切换特效
2015/11/22 Javascript
Nodejs学习item【入门手上】
2016/05/05 NodeJs
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
详解从Node.js的child_process模块来学习父子进程之间的通信
2017/03/27 Javascript
angularJS利用ng-repeat遍历二维数组的实例代码
2017/06/03 Javascript
JavaScript中立即执行函数实例详解
2017/11/04 Javascript
js中的深浅拷贝问题简析
2019/05/10 Javascript
微信小程序如何获取群聊的openGid以及名称详解
2019/07/17 Javascript
python对指定目录下文件进行批量重命名的方法
2015/04/18 Python
使用Python编写提取日志中的中文的脚本的方法
2015/04/30 Python
Python判断某个用户对某个文件的权限
2016/10/13 Python
Python模块文件结构代码详解
2018/02/03 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
python分布式编程实现过程解析
2019/11/08 Python
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
Yahoo的PHP面试题
2014/05/26 面试题
生态学毕业生自荐信
2013/10/27 职场文书
小学班主任培训方案
2014/06/04 职场文书
医院保洁服务方案
2014/06/11 职场文书
公司领导班子四风对照检查材料
2014/09/27 职场文书
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python