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

最新资讯
刘强东:2019年京东面临挑战 通过变革实现收入增长

刘强东:2019年京东面临

刘强东表示,通过组织变革,京东在极具挑战的环境中始终保
刘强东公开信:保持定力坚定前行 实现高质量加速增长

刘强东公开信:保持定

刘强东新春致员工信:保持定力 坚定前行 实现高质量加速
黄章时隔半年再发声 称会与魅族同在

黄章时隔半年再发声

魅族董事长黄章今日在魅族社区发声,称会与魅族和魅友同
创业一年,To B创始人:我们99%会挂掉

创业一年,To B创始人:我

过去12月,最火爆,未来12个月,最危险,企业服务领域这条赛道
孙正义重金独角兽梦碎:做披萨太难吃 只好去做披萨盒

孙正义重金独角兽梦碎

你还知道这样“伪技术”的公司和案例吗?
刷B站的年轻人,到底在刷什么?

刷B站的年轻人,到底在

吃透B站,抓住年轻人。
最新文章
jQuery设置下拉框显示与隐藏效果的方法分析

jQuery设置下拉框显示

这篇文章主要介绍了jQuery设置下拉框显示与隐藏效果的
策略模式实现 Vue 动态表单验证的方法

策略模式实现 Vue 动

策略模式(Strategy Pattern)又称政策模式,其定义一系列的
Layui Form 自定义验证的实例代码

Layui Form 自定义验

今天小编就为大家分享一篇Layui Form 自定义验证的实
图解NodeJS实现登录注册功能

图解NodeJS实现登录注

这篇文章主要介绍了NodeJS实现登录注册功能,本文图文
基于Layui自定义模块的使用方法详解

基于Layui自定义模块

今天小编就为大家分享一篇基于Layui自定义模块的使用
layer弹出层自适应高度,垂直水平居中的实现

layer弹出层自适应高

今天小编就为大家分享一篇layer弹出层自适应高度,垂直