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

javascript 子类在继承问题
大致意思是b是a的子类,c又是b的子类,按道理说c应该能有a的方法阿?为什么我不能获取到阿,大致的代码如下,是不是js不支持还是什么 ,请大神讲解下阿,刚在学,说错请包含阿

//a类
function a(att){
   this.att=att;
}
a.prototype.show=function(){
   alert(this.att);
};
//b类继承a
function b(att){
   this.att=att;
}
b.prototype.show2=function(){
   alert(this.att);
};
b.prototype=new a();
b.prototype.constructor=b;
//c类继承b
function c(att){
   this.att=att;
}
c.prototype.show3=function(){
   alert(this.att);
};
c.prototype=new b();
c.prototype.constructor=c;

var test=new c("test");
test.show();//为什么说找不到方法呢!

------解决方案--------------------
test.show();方法可以找到。
是test.show2()和test.show3()找不到吧!

要先设置继承,再设置对象的方法

//a类
function a(att){
   this.att=att;
}
a.prototype.show=function(){
   alert(this.att);
};
//b类继承a
function b(att){
   this.att=att;
}
b.prototype=new a();
b.prototype.constructor=b;
b.prototype.show2=function(){
   alert(this.att);
};
//c类继承b
function c(att){
   this.att=att;
}
c.prototype=new b();
c.prototype.constructor=c;
c.prototype.show3=function(){
   alert(this.att);
};

var test=new c("test");
test.show(); 
test.show2(); 
test.show3();