日期:2014-05-16  浏览次数:20268 次

ExtJS继承和javascript原生继承
//javsscript继承方式

			var People =function(sex){
				this.name='名字';	
				this.age=0;
				this.sex=sex;
			}
			
			People.prototype.talk=function(){window.alert('说话');}
			People.prototype.walk=function(){window.alert('走');}
			People.prototype.description=function(){window.alert(this.name+' 是 '+this.age+" "+this.sex);}
			
			var Worker=function(){
				People.call(this,'男'); //调用父类的构造函数初始化数据 将父类构造函数中数据复制到子类中,'男' 是传入给父类构造函数的参数,可以省略
				this.name='jack'; //覆盖父类属性
				this.age=12;
			}
			
			Worker.prototype=new People(); //实现继承,获取父类属性和函数
			Worker.prototype.doJob=function(){window.alert('工作');}
			Worker.prototype.talk=function(){window.alert('工作交谈')}//覆盖父类函数
			
			var worker=new Worker();
			
			worker.doJob(); 
			worker.talk(); //打印'工作交谈'
			worker.description(); //打印 'jack 是 12 undefined' 



//extJs继承

			var Student=function(config){
                                //调用父类构造函数初始化数据,将父类构造函数中数据复制到子类中,config是传给初始化父类构造函数的参数,可以省略。
				Student.superclass.constructor.call(this,'男'); 
                                /*从config复制函数或者属性给Student构造函数*/
				Ext.apply(this,config);
			
			}
			

                        //extend实现子类student继承父类people
			Ext.extend(Student,People,{study:function(){window.alert('学习')},
						   talk:function(){window.alert('学习交谈')}  
						  } //此对象中的属性,函数添加到子类的prototype原型对象中,或者覆盖父类prototype原型中的属性和函数。
                                  );
	       
	        	var student=new Student({name:'xx',age:23});
	        	student.talk();
	        	student.walk();
			student.description();