jquery框架概览(二)

(function(window, undefined) {
    
})(window)

window对象作为参数传进闭包的好处

  • JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员
  • 在函数中定义一个变量时,这个变量只对当前函数可见,javascript会搜索当前函数的作用域,如果没有找到,则继续向上层搜索,而查询是要消耗性能的.
  • 在对jQuery代码进行压缩时,window就能在jQuery内部用任意的简写字母代替

undefined为什么作为参数传进去

  • undefined可以在js中被修改,这样jQuery内容使用的undefined就被修改了

代码的38~41行

var _jQuery = window.jQuery,
_$ = window.$;

在js中如果也定义了$和jQuery, jQuery和$就保存了这两个变量,避免了冲突
代码的61~63行定义了jQuery函数(返回的是一个对象)

jQuery = function( selector, context ) {
        // The jQuery object is actually just the init constructor 'enhanced'
        return new jQuery.fn.init( selector, context, rootjQuery );
    },

代码的96行就定义了jQuery.fn,就能知道它其实就是jQuery的原型

jQuery.fn = jQuery.prototype={}

代码的283行含义把jQuery构造函数的原型的init的构造函数的原型对jQuery构造函数的原型有引用关系

jQuery.fn.init.prototype = jQuery.fn;

上面的有些绕口看代码吧

function jQuery(){
    return new jQuery.prototype.init();
}
jQuery.prototype.init=function(){};
jQuery.prototype.css=function(){console.log("2")};
jQuery.prototype.init.prototype=jQuery.prototype;
jQuery().css();

下面是代码的示意图

代码的66~82行是一些正则

    // Used for matching numbers
    core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
     - [+-]?  表示匹配一个+号或者一个-号也可能一个都没有
     - (?:\d*\.|) 
     (?:) 表示不捕获 \d*表示0个或者多个数字,.表示一个小数点,|表示或者为空
     - \d+ 表示1个或者多个数字
     - (?:[eE][+-]?\d+|) 
     [eE]表示e或者E,[+-]?\d表示有且只有一个符号或者一个都没有,多个数字
     - core_pnum 
     - 其实就是保存着一个字符串"[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)",方便和后续的组合成一个正则

    // Used for splitting on whitespace
    core_rnotwhite = /\S+/g,
     - /\S+/g  表示所有的非空白的字符

    // A simple way to check for HTML strings
    // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
    // Strict HTML recognition (#11290: must start with <)
    rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
     - 匹配的是<p>aaa或者#id


    // Match a standalone tag
    rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
     - 匹配独立的标签比如<p></p>

    // Matches dashed string for camelizing
    rmsPrefix = /^-ms-/,
     - 匹配ie浏览器的前缀比如chrome的前缀(-webkit-)
    rdashAlpha = /-([\da-z])/gi,
     - 匹配一个-号加数字或者字母
posted @ 2017-03-04 13:34  decodedididi  阅读(208)  评论(0编辑  收藏  举报