首页 > 网站 > WEB开发 > 正文

jquery源码----初步认识源码

2024-04-27 15:18:54
字体:
来源:转载
供稿:网友
(function(window,undefined){    // 为什么要传入window这个形参:    //     1.其实是为了方便压缩,如果形参是e,或者w,传入window的话可以在闭包内部用w或者e代替window进行压缩    //     2.为了提升查找速度,传入不用去最底层去查找了    // 为什么传入undefined:    //     1.为了防止undefined被修改    //     如果外部 undefined = 10 ; undefined 会被修改    // 建议我们不要使用"use strict";        rootjquery,  //文档根目录 rootjquery = jQuery(document);        readyList,   //与DOM加载有关 后面会有解释        core_strundefined = typeof undefined ,  //返回的是字符串"undefined"    //  先来解释“undefined” 和 undefined 的区别 :    //    如果是IE678下:如果是 xml对象的属性的时候,window.a == undefined ;这种情况是错误的,不兼容      //    只能用这个:typeof window.a == "undefined" ;    location = window.location,    document = window.document,    docElem = document.documentElement,    //如果发生jquery,$变量发生冲突,权限让渡的问题,后面会有仔细的讲解    _jquery = window.jQuery,    _$ = window.$,    //$.type()方法有关,讲$.type()的时候会详解    //class2type = {'[Object String]' : 'string' , '[object Array]' : 'array'}    class2type = {} ;    //2.0.3版本前与数据存储有关,2.0.3以后不用了    core_deletedIds = [],    core_concat = core_deletedIds.concat,    core_push = core_deletedIds.push,    core_slice = core_deletedIds.slice,    core_indexOf = core_deletedIds.indexOf,    core_toString = core2type.toString,    core_hasOwn = core2type.hasOwnPRoperty,     core_trim = core_version.trim, //去前后空格    //.............................jquery函数...........................................................................    先来看我们用js写面向对象:        1.写个构造函数:            function Person(){            }        2.添加原型属性:            先添加一个初始化方法:实现初始化            Person.prototype.init = function(){            };            Person.prototype.CSS = function(){            };            var person = new Person();            person.init();            person.css();    但是,jquery是这样写的:注意看Jquery的调用方式的不同:他不是通过new一个对象来调用的,而是:jquery().css();        function jQuery(){            return new jQuery.prototype.init();        }        //匹配数字:正负小数点科学计数法 会在css方法里面讲到        core_pnum = /[+-]?(?:/d/.|)/d+(?:[eE][+-]?/d+|)/.source,        //空格        core_rnotwhite = //s+/g,        //匹配标签  和  id  的形式        rquickExpr = /^(?:/s*(<[/w/W]+>)[^>]*|#([/w-]*))$/,        rsingleTag = /^<(/w+)/s*//?>(?:<///1>|)$/,        rmsPrefix = /^-ms-/,        rdashAlpha = /-([/da-z])/gi,        jQuery.prototype.init = function(){        }        jQuery.prototype.css = function(){        }         //也就是jQuery 和 jquery.prototype.init() 公用一个原型,那个由new jQuery.prototype.init()产生的对象的_proto_指针也指向这个原型对象,       //这就解释了为啥jquery的有些方法new jQuery.prototype.init()new的对象也能用,因为公用一个原型对象        jquery.prototype.init.prototype = jQuery.fn = jQuery.prototype;
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表