zoukankan      html  css  js  c++  java
  • 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*(<[wW]+>)[^>]*|#([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,
         - 匹配一个-号加数字或者字母
    
  • 相关阅读:
    [转] 礼物的含义
    刘邦与项羽的关系
    inner join...on和join...on用法
    Oracl常用到问题
    [转] 河南、的女孩好…
    人的痛苦往往在于追求的不是“幸福”,而是“比别人幸福”!
    oracle 基础学习
    WORD文档中的回车符和空格键符如何去掉?
    采用FireFox浏览器进行页面级开发
    Windows Socket Programming 网络编程系列 简单客户端与服务器
  • 原文地址:https://www.cnblogs.com/snoy/p/6501148.html
Copyright © 2011-2022 走看看