jQuery是一个兼容多浏览器的javascript框架,核心理念是writeless,domore(写得更少,做得更多)。如今,jQuery已经成为最流行的javascript框架,在世界前10000个访问最多的网站中,有超过55%在使用jQuery。那么作为一个前端设计师,怎么可能不来深入了解下jQuery呢,首先我们从他的总体构架开始吧

先来看代码:


(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的外面有可能被篡改掉.尽管这个篡改的结果,各种浏览器不一样.

最新资讯
中国铁塔董事长:已交付11万5G基站 97%现有站址改造

中国铁塔董事长:已交付

对于未来5G建设,他称将坚持资源统筹共享,从供给侧促进5G
部分债权人要求法(tian)院(ping)驳回贾跃亭破产重组申请

部分债权人要求法(tian)院(ping)驳

对此,11月21日,贾跃亭债务处理小组方面表示,如果懒财方面
一图读懂网易Q3财报:净利润47亿元 同比增长109%

一图读懂网易Q3财报:净

网易第三季度净营收146.4亿元,市场预期174.12亿元,去年
雷军:小米将建设5G未来工厂 手机年产能100万台

雷军:小米将建设5G未来

雷军表示,目前全球智能手机产业正在下滑,但明年5G手机将
拼多多黄峥:花钱是一种投资 “百亿补贴”不是口号

拼多多黄峥:花钱是一种

黄峥表示,花钱是一种投资,是一种长期的机遇,拼多多的“百
网易高管解读第三季度财报:音乐内容成本希望减一减

网易高管解读第三季度

网易第三季度净营收146.4亿元,市场预期174.12亿元,去年
最新文章
微信小程序调用天气接口并且渲染在页面过程详解

微信小程序调用天气接

这篇文章主要介绍了微信小程序调用天气接口并且渲染在
Electron + vue 打包桌面操作流程详解

Electron + vue 打包

这篇文章主要介绍了Electron + vue 打包桌面操作流程,
前端Vue项目详解--初始化及导航栏

前端Vue项目详解--初

这篇文章主要介绍了前端Vue项目详解--初始化及导航栏,
ES6 Object方法扩展的应用实例分析

ES6 Object方法扩展的

这篇文章主要介绍了ES6 Object方法扩展的应用,结合实
JS实现给数组对象排序的方法分析

JS实现给数组对象排序

这篇文章主要介绍了JS实现给数组对象排序的方法,结合
基于vue+axios+lrz.js微信端图片压缩上传方法

基于vue+axios+lrz.js

这篇文章主要介绍了基于vue+axios+lrz.js微信端图片压