jquery源码----初步认识源码
来源:互联网 发布:双系统windows引导修复 编辑:程序博客网 时间:2024/06/15 03:35
(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;
// 为什么要传入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;
1 0
- jquery源码----初步认识源码
- jquery 源码分析初步
- jquery源码分析初步
- 初步认识jQuery
- JavaScript、JQuery初步认识
- 对jQuery的初步认识
- struts源码初步研究
- RxJava源码初步分析
- Picasso源码初步分析
- mybatis源码初步解析
- spring源码初步探索
- ButterKnife源码初步探秘
- Servlet源码解析初步
- jquery源码
- JQuery源码
- jQuery源码
- jquery源码
- jQuery源码
- 框架篇:Spring+SpringMVC+hibernate整合开发
- python 数据类书籍推荐
- iOS-清除缓存
- linux学习笔记(2)
- {模板}long long快速乘?
- jquery源码----初步认识源码
- OpenWRT(十一)LuCi开发(一)
- 【Python】Centos7下部署Django(nginx+gunicorn)
- Android之MediaPlayer的简单介绍之播放音乐
- Python自学笔记六、socket编程
- js下的冒泡排序与选择排序
- CentOS 6.5下安装KVM
- nginx端口转发内网使用yum
- 批量修改文件夹名称