jQuery源码分析—1

jquery版本:jQuery-2.0.3.js


立即执行函数

  • 定义:

    在立即执行函数中书写的任何变量和函数在外边都是找不到的
    原因是希望把函数和变量都局部的,防止和其它的代码冲突,所以得对外提供接口,才可以找到这些方法

    (function(){
      var a = 10;
      function $(){
        alert(a);
      }
    })();
    
  • 对外提供接口的方法:
    (function(){
      var a = 10;
      function $(){
        alert(a);
      }
      window.$ = $;
    })();
    
    $();
    
  • jQuery代码中:
    // 传入undefined的目的:
    /*
    1. 下面这段代码,在IE10中是undefined,在更低版本浏览器中,就是10
    2. 为了防止有人在外边对undefined进行更改,所以传一个undefined进去,那么,如果要找undefined,沿着作用域链,可以找到正确的undefined
    <script>
    	var undefined = 10;
    	alert(undefined);
    </script>
    */
    (function( window, undefined ) {
    	if ( typeof window === "object" && typeof window.document === "object" ) {
    	    window.jQuery = window.$ = jQuery;
    	}
    })( window );
    // 传入参数window的好处:
    // 1. 如果不写window也是可以的,按照作用域链往上找,太长了,所以写在参数里面,直接一下就可以找到
    // 2. 如果进行代码压缩的话,可以把window写成w,减少代码的数量
    

代码结构

  • 21 -> 94 定义了一些变量和函数
  • 从 96 -> 283 是给JQ对象,添加一些方法和属性
  • 从 285 -> 347 是JQ的继承方法
  • 从 349 -> 817 是扩展一些工具方法(扩展静态属性和静态方法)
  • 从 877 -> 2856 Sizzle: 复杂选择器的实现
  • 从 2880 -> 3042 Callbacks: 回调对象: 对函数的统一管理
  • 从 3043 -> 3183 Deferred: 延迟对象: 对异步的统一管理
  • (3184, 3259) support: 功能检测
  • (3308, 3652) data(): 数据缓存
  • (3653, 3797) queue() : 队列管理
    (3803, 4299) attr() prop() val() addClass() 等: 对元素属性的操作
  • (4300, 5128) on() trigger(): 事件操作的相关方法
  • (5140, 6057) DOM操作: 添加 删除 获取 包装
  • (6058, 6620) css(): 样式的操作
  • (6621, 7854) 提交的数据和ajax(): ajax() load() getJson()
  • (7855, 8584) animate(): 运动的方法
  • (8804, 8821) JQ支持模块化的模式

源码详细信息的查看

  • #13335 是查看详细介绍的编号(网站
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值