zoukankan      html  css  js  c++  java
  • jQuery 1.2.6 源码阅读解读

    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权威指南
    
  • 相关阅读:
    jQuery(3)——DOM操作
    jQuery(2)——选择器
    jQuery(1)——了解jQuery
    JavaScript(10)——Ajax以及跨域处理
    JavaScript(9)——call与apply
    JavaScript(8)——JSON
    JavaScript(7)——事件2.0
    JavaScript(6)——事件1.0
    JavaScript(5)——DOM
    spring mvc+spring+mybatis搭建javaWeb项目时遇到的一些问题
  • 原文地址:https://www.cnblogs.com/zhnaglei/p/8629982.html
Copyright © 2011-2022 走看看