• 鄂州重拳治理“散乱污”企业 半年内关停数量比过去两年还多 2019-06-15
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-06-15
  • 学习领会党的十九大报告需要准确把握的几个重大问题 2019-06-09
  • 飞行员夜间海上实弹射击 导弹全部命中目标 2019-06-07
  • 武警重庆总队举行干部退役仪式 2019-06-06
  • 香港大学发现有效对抗流感病毒的新方法 2019-06-05
  • 一语惊坛(6月15日):人民日报和共和国共同成长。 2019-06-05
  • 人的本质,要能反映出人与动物的本质不同。过去有个网友说“劳动是人的本质”;真理先生现说是“财富占有”!???,能解释一下么? 2019-06-04
  • 点击天山网 掌握全新疆 2019-06-04
  • 端午小长假各大文化场馆火热迎客 文化游成市民游客假期“心头好” 2019-05-31
  • 肉毒梭菌感染相关新闻 2019-05-31
  • 姚明撰文回忆菜鸟赛季 温暖的回忆感谢弗朗西斯 2019-05-26
  • 遵义师范学院副校长颜永强:长征为军队建设提供三方面宝贵经验 2019-05-23
  • 劲爆福利 昨日中奖名单公布 今日5大箱可乐任意送劲爆福利-等级 2019-05-22
  • 风水神话更危险的事,就是眼瞎,根本分不清谁对谁, 2019-05-22
  • Jquery中文网 南粤风采36选7开奖公告 www.77402m.com
    Jquery中文网 >  jQuery  >  jquery 教程  >  正文 jQuery源码分析-01总体架构分析

    南粤风釆36选7开奖结果:jQuery源码分析-01总体架构分析

    发布时间:2013-06-10   编辑:南粤风采36选7开奖公告 www.77402m.com
    从上边的注释看,jQuery的源码结构相当清晰、条理,不像代码那般晦涩和让人纠结
    从上边的注释看,jquery的源码结构相当清晰、条理,不像代码那般晦涩和让人纠结 1. 总体架构

    1.1 自调用匿名函数 self-invoking anonymous function
    打开jQuery源码,首先你会看到这样的代码结构:
    复制代码 代码如下:

    (function( window, undefined ) {
    // jquery code
    })(window);

    1. 这是一个自调用匿名函数。什么东东呢?在第一个括号内,创建一个匿名函数;第二个括号,立即执行
    2. 为什么要创建这样一个“自调用匿名函数”呢?
    通过定义一个匿名函数,创建了一个“私有”的命名空间,该命名空间的变量和方法,不会破坏全局的命名空间。这点非常有用也是一个JS框架必须支持的功能,jQuery被应用在成千上万的JavaScript程序中,必须确保jQuery创建的变量不能和导入他的程序所使用的变量发生冲突。
    3. 匿名函数从语法上叫函数直接量,JavaScript语法需要包围匿名函数的括号,事实上自调用匿名函数有两种写法(注意标红了的右括号):
    复制代码 代码如下:

    (function() {
    console.info( this );
    console.info( arguments );
    }( window ) );
    (function() {
    console.info( this );
    console.info( arguments );
    })( window );

    4. 为什么要传入window呢?
    通过传入window变量,使得window由全局变量变为局部变量,当在jQuery代码块中访问window时,不需要将作用域链回退到顶层作用域,这样可以更快的访问window;这还不是关键所在,更重要的是,将window作为参数传入,可以在压缩代码时进行优化,看看jquery-1.6.1.min.js:
    (function(a,b){})(window); // window 被优化为 a

    5. 为什么要在在参数列表中增加undefined呢?
    在 自调用匿名函数 的作用域内,确保undefined是真的未定义。因为undefined能够被重写,赋予新的值。
    undefined = "now it's defined";
    alert( undefined );

    浏览器测试结果:
    浏览器
    测试结果
    结论
    ie
    now it's defined
    可以改变
    firefox
    undefined
    不能改变
    chrome
    now it's defined
    可以改变
    opera
    now it's defined
    可以改变

    6. 注意到源码最后的分号了吗?
    分号是可选的,但省略分号并不是一个好的编程习惯;为了更好的兼容性和健壮性,请在每行代码后加上分号并养成习惯。
    1.2 总体架构
    接下来看看在 自调用匿名函数 中都实现了什么功能,按照代码顺序排列:
    复制代码 代码如下:

    (function( window, undefined ) {
    // 构造jQuery对象
    var jQuery = function( selector, context ) {
    return new jQuery.fn.init( selector, context, rootjQuery );
    }
    // 工具函数 Utilities
    // 异步队列 Deferred
    // 浏览器测试 Support
    // 数据缓存 Data
    // 队列 queue
    // 属性操作 Attribute
    // 事件处理 Event
    // 选择器 Sizzle
    // DOM遍历
    // DOM操作
    // CSS操作
    // 异步请求 Ajax
    // 动画 FX
    // 坐标和大小
    window.jQuery = window.$ = jQuery;
    })(window);

    从上边的注释看,jQuery的源码结构相当清晰、条理,不像代码那般晦涩和让人纠结。
    后边的章节基本将以这个顺序展开。

    1.3 下节预告

    如果你看过jQuery源码,很快就会发现这里到处充斥着正则表达式,而很多JavaScript开发人员又疏于正则基础知识,为了扫清这个障碍,下一章将先温习JavaScript正则表达式的基础知识,再详细剖析jQuery中的正则表达式。
    在正式开始分析源码之前,还有没有要准备的基础知识呢?
    当然有。比如JavaScript API中的类和对象,如果你不熟练的话,至少手头要有一本参考手册。
    除了正则,其他的知识点会在分析过程中穿插讲解,不计划辟出新的章节。

    南粤风采36选7开奖公告 www.77402m.com 您可能感兴趣的文章:
    jQuery源码分析-01总体架构分析
    jQuery的UI插件 Smart UI
    jQuery总体架构的理解分析
    通过jQuery源码学习javascript(一)
    jQuery源码分析-03构造jQuery对象-源码结构和核心函数
    jQuery.fn和jQuery.prototype区别介绍
    jquery 3D球状导航的文章分类
    jquery iframe操作详细解析
    jQuery的运行机制和设计理念分析
    jquery的ajax简单结构示例代码

    [关闭]
  • 鄂州重拳治理“散乱污”企业 半年内关停数量比过去两年还多 2019-06-15
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-06-15
  • 学习领会党的十九大报告需要准确把握的几个重大问题 2019-06-09
  • 飞行员夜间海上实弹射击 导弹全部命中目标 2019-06-07
  • 武警重庆总队举行干部退役仪式 2019-06-06
  • 香港大学发现有效对抗流感病毒的新方法 2019-06-05
  • 一语惊坛(6月15日):人民日报和共和国共同成长。 2019-06-05
  • 人的本质,要能反映出人与动物的本质不同。过去有个网友说“劳动是人的本质”;真理先生现说是“财富占有”!???,能解释一下么? 2019-06-04
  • 点击天山网 掌握全新疆 2019-06-04
  • 端午小长假各大文化场馆火热迎客 文化游成市民游客假期“心头好” 2019-05-31
  • 肉毒梭菌感染相关新闻 2019-05-31
  • 姚明撰文回忆菜鸟赛季 温暖的回忆感谢弗朗西斯 2019-05-26
  • 遵义师范学院副校长颜永强:长征为军队建设提供三方面宝贵经验 2019-05-23
  • 劲爆福利 昨日中奖名单公布 今日5大箱可乐任意送劲爆福利-等级 2019-05-22
  • 风水神话更危险的事,就是眼瞎,根本分不清谁对谁, 2019-05-22