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 相关文章推荐
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
Mar 06 Javascript
实现连缀调用的map方法(prototype)
Aug 05 Javascript
JavaScript prototype属性深入介绍
Nov 27 Javascript
模拟多级复选框效果的jquery代码
Aug 13 Javascript
Extjs根据条件设置表格某行背景色示例
Jul 23 Javascript
简单的jquery左侧导航栏和页面选中效果
Aug 21 Javascript
JS来动态的修改url实现对url的增删查改
Sep 05 Javascript
js实现带有介绍的Select列表菜单实例
Aug 18 Javascript
js图片跟随鼠标移动代码
Nov 26 Javascript
jQuery控制控件文本的长度的操作方法
Dec 05 Javascript
JS实现的类似微信聊天效果示例
Jan 29 Javascript
详解vue组件中使用路由方法
Feb 12 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制作静态网站的模板框架(三)
2006/10/09 PHP
php判断正常访问和外部访问的示例
2014/02/10 PHP
PHP实现即时输出、实时输出内容方法
2015/05/27 PHP
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
Laravel中使用Queue的最基本操作教程
2017/12/27 PHP
PHP的微信支付接口使用方法讲解
2019/03/08 PHP
PHP判断当前使用的是什么浏览器(推荐)
2019/10/27 PHP
网页的标准,IMG不支持onload标签怎么办
2006/06/29 Javascript
JS动态创建Table,Tr,Td并赋值的具体实现
2013/07/05 Javascript
Jquery validation remote 验证的缓存问题解决方法
2014/03/25 Javascript
用jquery实现的一个超级简单的下拉菜单
2014/05/18 Javascript
JavaScript学习笔记之内置对象
2015/01/22 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
Angularjs 设置全局变量的方法总结
2016/10/20 Javascript
在Js页面通过POST传递参数跳转到新页面详解
2017/08/25 Javascript
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
Thinkjs3新手入门之添加一个新的页面
2017/12/06 Javascript
nodejs调取微信收货地址的方法
2017/12/20 NodeJs
vue生命周期与钩子函数简单示例
2019/03/13 Javascript
在Docker上开始部署Python应用的教程
2015/04/17 Python
Python实现遍历目录的方法【测试可用】
2017/03/22 Python
python添加模块搜索路径方法
2017/09/11 Python
深入理解Python中的super()方法
2017/11/20 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
numpy数组广播的机制
2019/07/12 Python
使用python实现数组、链表、队列、栈的方法
2019/12/20 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
2020/01/10 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
2020/02/29 Python
PyCharm MySQL可视化Database配置过程图解
2020/06/09 Python
h5封装下拉刷新
2020/08/25 HTML / CSS
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
办公室岗位职责
2014/02/12 职场文书
银行求职信怎么写
2014/05/26 职场文书
激励员工的口号
2014/06/16 职场文书
三问三解心得体会
2014/09/05 职场文书
Python实现随机生成迷宫并自动寻路
2021/06/13 Python