jQuery 总体源码结构笔记

jQuery 总体源码结构笔记

// 最外层是一个自调用函数
( function( window,undefined ){
   // 声明一个jQuery构造函数
   var jQuery = ( function(){
        // 将jQuery构造函数覆盖改成实例
        var jQuery = function(){
            // 说明我们使用的jQuery对象并不是直接使用jQuery构造函数构造的,只是两者的原型一样而已
            return new jQuery.fn.init();   
        }
        // 将jQuery.prototype简写为jQuery.fn
        jQuery.fn = jQuery.prototype = {
            constructor = jQuery,
            // 初始化jQuery对象
            init: function(){...}
        }
        // 构造jQuery实例的时候重新制定了init函数的原型
        jQuery.fn.init.prototype = jQuery.fn;
        jQuery.extend = jQuery.fn.extend = function(){...};
        jQuery.extend({...});
        return jQuery;
   } )();
   // 添加全局变量$和jQuery,两者都是一个实例,并不是构造函数
    window.jQuery = window.$ = jQuery;  
} )(window);

总结: 1.在函数jQuery()函数内部使用new创建一个实例;
2.jQuery实例不是直接有jQuery函数构造,而是通过一个init函数间接实现,为了不实例化jQuery函数中那些在内部使用的方法和属性;
3.对一些太长的标识符进行简缩比如jQuery.fn,$;
4.将jQuery实例付给全局变量jQuery
5.传入window对象,变成局部变量,来缩短查找window对象时候搜索的作用域链长度。
6.设置形参undefined可以起到缩短搜索的作用域链,而不传入参数是因为,外部的undefined可能存在被个人修改,不传入时它的默认值就是undefined,这一最保险

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值