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,
         - 匹配一个-号加数字或者字母
    
  • 相关阅读:
    arcgis api 3.x for js 入门开发系列八聚合效果(附源码下载)
    arcgis api 3.x for js 入门开发系列七图层控制(附源码下载)
    arcgis api 3.x for js 入门开发系列六地图分屏对比(附源码下载)
    arcgis api 3.x for js 入门开发系列五地图态势标绘(附源码下载)
    arcgis api 3.x for js 入门开发系列四地图查询(附源码下载)
    Java里面获取当前服务器的IP地址
    Flutter at Google I/O 2018
    Modbus RTU 协议使用汇总
    plsql 创建表空间、用户、赋予权限
    Oracle:ODP.NET Managed 小试牛刀
  • 原文地址:https://www.cnblogs.com/snoy/p/6501148.html
Copyright © 2011-2022 走看看