JQuery源码解析

JQuery源码 3 / 21-94

2018-02-28  本文已影响0人  羊烊羴
var
    
    rootjQuery,
    //定义一个顶级变量,实际上就是我们JQuery的$(document)
    readyList,
    
    // Support: IE9
    // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined`
    core_strundefined = typeof undefined,

    // Use the correct document accordingly with window argument (sandbox)
    location = window.location,
    document = window.document,
    docElem = document.documentElement,

    //以下为防止冲突的写法,如果在外层我们使用了其他框架,并且该框架中有$/JQuery字符,那么再使用JQuery时将该字符定义到_$/_JQuery上
    _jQuery = window.jQuery,
    _$ = window.$,

    // 设定一个变量,值为空数组
    class2type = {},

    //设定一个数组,在JQ中会将数组的方法都赋值到变量
    core_deletedIds = [],
    //JQ版本号
    core_version = "2.0.3",

    //数组、对象方法挂载到变量
    core_concat = core_deletedIds.concat,
    core_push = core_deletedIds.push,
    core_slice = core_deletedIds.slice,
    core_indexOf = core_deletedIds.indexOf,
    core_toString = class2type.toString,
    core_hasOwn = class2type.hasOwnProperty,
    core_trim = core_version.trim,

    //设置JQ方法,返回值为JQuery的原型的init方法,这样做法的好处在第一章说过
    jQuery = function( selector, context ) {
        return new jQuery.fn.init( selector, context, rootjQuery );
    },

    // Used for matching numbers
    core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,

    // Used for splitting on whitespace
    core_rnotwhite = /\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-]*))$/,

    // Match a standalone tag
    rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,

    // Matches dashed string for camelizing
    rmsPrefix = /^-ms-/,
    rdashAlpha = /-([\da-z])/gi,

    // Used by jQuery.camelCase as callback to replace()
    fcamelCase = function( all, letter ) {
        return letter.toUpperCase();
    },

    // The ready event handler and self cleanup method
    completed = function() {
        document.removeEventListener( "DOMContentLoaded", completed, false );
        window.removeEventListener( "load", completed, false );
        jQuery.ready();
    };
上一篇下一篇

猜你喜欢

热点阅读