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 相关文章推荐
兼容FireFox 的 js 日历 支持时间的获取
Mar 04 Javascript
JavaScript this 深入理解
Jul 30 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
Aug 31 Javascript
在Docker快速部署Node.js应用的详细步骤
Sep 02 Javascript
微信小程序实战之登录页面制作(5)
Mar 30 Javascript
vue中appear的用法
Aug 17 Javascript
浅析Angular19 自定义表单控件
Jan 31 Javascript
Vue拖拽组件开发实例详解
May 11 Javascript
JS左右无缝轮播功能完整实例
May 16 Javascript
js中let能否完全替代IIFE
Jun 15 Javascript
9种方法优化jQuery代码详解
Feb 04 jQuery
深入理解Vue的数据响应式
May 15 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
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
2014/08/20 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
php 输出json及显示json中的中文汉字详解及实例
2016/11/09 PHP
php pdo操作数据库示例
2017/03/10 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
2017/05/29 PHP
动态加载iframe
2006/06/16 Javascript
Prototype使用指南之selector.js说明
2008/10/26 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
2014/06/23 Javascript
javascript arguments使用示例
2014/12/16 Javascript
js生成随机数的方法实例
2015/10/16 Javascript
AngularJS入门教程之XHR和依赖注入详解
2016/08/18 Javascript
jQuery Raty 一款不错的星级评分插件
2016/08/24 Javascript
简单理解vue中实例属性vm.$els
2016/12/01 Javascript
js操作浏览器的参数方法
2017/01/21 Javascript
Javascript创建类和对象详解
2017/05/31 Javascript
javascript+css3开发打气球小游戏完整代码
2017/11/28 Javascript
微信小程序自定义prompt组件步骤详解
2018/06/12 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
Vue快速实现通用表单验证功能
2019/12/05 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
2020/03/20 jQuery
Python Tkinter GUI编程入门介绍
2015/03/10 Python
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
Python安装第三方库及常见问题处理方法汇总
2016/09/13 Python
python shell根据ip获取主机名代码示例
2017/11/25 Python
python编程通过蒙特卡洛法计算定积分详解
2017/12/13 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
浅谈PYTHON 关于文件的操作
2019/03/19 Python
Python+PyQT5的子线程更新UI界面的实例
2019/06/14 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
2020/01/10 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
英文商务邀请函范文
2015/01/31 职场文书
Java常用函数式接口总结
2021/06/29 Java/Android