(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.hasOwn
PRoperty,
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;