jQuery 1.2.6 源码阅读解读
1.初始化方法
(function(){
//暴露外部使用的接口
var jQuery=window.jQuery=window.$=function(){
return new jQuery.fn.init();
};
//处理原型对象
jQuery.fn=jQuery.prototype={
init:function(){
return this;
},
jQuery:'1.0.0',
length:0,
size:function(){
return this.length;
}
};
jQuery.fn.init.prototype=jQuery.fn;
//实现继承
jQuery.extend=function.fn.extend=function(){};
//添加静态方法
jQuery.extend({});
//添加实例方法
jQuery.fn.extend({});
});
2.实现选择器
(function(){
//暴露外部使用的接口
var jQuery=window.jQuery=window.$=function(selector){
return new jQuery.fn.init(selector);
};
//处理原型对象
jQuery.fn=jQuery.prototype={
init:function(selector){
var elements=document.getElementsByTagName(selector);
Array.prototype.push.apply(this.elements);
return this;
},
jQuery:'1.0.0',
length:0,
size:function(){
return this.length;
}
};
jQuery.fn.init.prototype=jQuery.fn;
//实现继承
jQuery.extend=function.fn.extend=function(){};
//添加静态方法
jQuery.extend({});
//添加实例方法
jQuery.fn.extend({});
});
3.继承
(function(){
//暴露外部使用的接口
var jQuery=window.jQuery=window.$=function(selector){
return new jQuery.fn.init(selector);
};
//处理原型对象
jQuery.fn=jQuery.prototype={
init:function(selector){
var elements=document.getElementsByTagName(selector);
Array.prototype.push.apply(this.elements);
return this;
},
jQuery:'1.0.0',
length:0,
size:function(){
return this.length;
}
};
jQuery.fn.init.prototype=jQuery.fn;
//实现继承 并且只处理只有一个参数,也就是参数的扩展
jQuery.extend=function.fn.extend=function(){
var o=arguments[0];
for (var p in o) {
this[p]=o[p];
}
};
//添加静态方法
jQuery.extend({});
//添加实例方法
jQuery.fn.extend({});
});
4.添加静态方法
(function(){
//解决版本冲突
var _$=window.$;
var _jQuery=window.jQuery;
//暴露外部使用的接口
var jQuery=window.jQuery=window.$=function(selector){
return new jQuery.fn.init(selector);
};
//处理原型对象
jQuery.fn=jQuery.prototype={
init:function(selector){
var elements=document.getElementsByTagName(selector);
Array.prototype.push.apply(this.elements);
return this;
},
jQuery:'1.0.0',
length:0,
size:function(){
return this.length;
}
};
jQuery.fn.init.prototype=jQuery.fn;
//实现继承 并且只处理只有一个参数,也就是参数的扩展
jQuery.extend=function.fn.extend=function(){
var o=arguments[0];
for (var p in o) {
this[p]=o[p];
}
};
//添加静态方法
jQuery.extend({
trim:function(text){
return (text || '').replace(/^s+|s+$/g,'');
},
noConflict:function(){
window.$=_$;
window.jQuery=_jQuery;
return jQuery;
}
});
//添加实例方法
jQuery.fn.extend({});
});
5.添加实例方法
(function(){
//解决版本冲突
var _$=window.$;
var _jQuery=window.jQuery;
//暴露外部使用的接口
var jQuery=window.jQuery=window.$=function(selector){
return new jQuery.fn.init(selector);
};
//处理原型对象
jQuery.fn=jQuery.prototype={
init:function(selector){
var elements=document.getElementsByTagName(selector);
Array.prototype.push.apply(this.elements);
return this;
},
jQuery:'1.0.0',
length:0,
size:function(){
return this.length;
}
};
jQuery.fn.init.prototype=jQuery.fn;
//实现继承 并且只处理只有一个参数,也就是参数的扩展
jQuery.extend=function.fn.extend=function(){
var o=arguments[0];
for (var p in o) {
this[p]=o[p];
}
};
//添加静态方法
jQuery.extend({
trim:function(text){
return (text || '').replace(/^s+|s+$/g,'');
},
noConflict:function(){
window.$=_$;
window.jQuery=_jQuery;
return jQuery;
}
});
//添加实例方法
jQuery.fn.extend({
get:function(num){
return this[num];
},
each:function(fn){
for (var i=0;i<this.length;i++) {
fn(i,this[i]);
}
},
css:function(){
var l=arguments.length;
if(l==1){
return this[0].style[arguments[0]];
}else{
var name=arguments[0];
var value=arguments[1];
this.each(function(index,ele){
ele.style[name]=value;
})
}
}
});
});
6.链式操作
(function(){
//解决版本冲突
var _$=window.$;
var _jQuery=window.jQuery;
//暴露外部使用的接口
var jQuery=window.jQuery=window.$=function(selector){
return new jQuery.fn.init(selector);
};
//处理原型对象
jQuery.fn=jQuery.prototype={
init:function(selector){
var elements=document.getElementsByTagName(selector);
Array.prototype.push.apply(this.elements);
return this;
},
jQuery:'1.0.0',
length:0,
size:function(){
return this.length;
}
};
jQuery.fn.init.prototype=jQuery.fn;
//实现继承 并且只处理只有一个参数,也就是参数的扩展
jQuery.extend=function.fn.extend=function(){
var o=arguments[0];
for (var p in o) {
this[p]=o[p];
}
};
//添加静态方法
jQuery.extend({
trim:function(text){
return (text || '').replace(/^s+|s+$/g,'');
},
noConflict:function(){
window.$=_$;
window.jQuery=_jQuery;
return jQuery;
}
});
//添加实例方法
jQuery.fn.extend({
get:function(num){
return this[num];
},
each:function(fn){
for (var i=0;i<this.length;i++) {
fn(i,this[i]);
}
return this;
},
css:function(){
var l=arguments.length;
if(l==1){
return this[0].style[arguments[0]];
}else{
var name=arguments[0];
var value=arguments[1];
this.each(function(index,ele){
ele.style[name]=value;
})
}
return this;
}
});
});
7.后续学习
* 1.面向对象JavaScript
* 2.jQuery1.2.6源码
* 3.常用的JavaScript的设计模式
* 4.高性能JavaScript
* 5.js权威指南