Javascript – Fragen zur Vererbung
PHP中文网
PHP中文网 2017-06-15 09:21:31
0
2
560
function extend(Child,Parent){
var F=function(){};
F.prototype=Parent.prototype;
Child.prototype=new F();
Child.prototype.constructor=Child;
Child.uber=Parent.prototype;
}

function Shape(){}
Shape.prototype.name='Shape';
Shape.prototype.toString=function(){
return this.constructor.uber
    ?this.constructor.uber.toString()+', ' + this.name
    :this.name;
};

function TwoDShape(){}
extend(TwoDShape,Shape);
TwoDShape.prototype.name='2D shape';

function Triangle(side,height){
this.side=side;
this.height=height;
}

var F=function(){};
extend(Triangle,TwoDShape);
Triangle.prototype.name='Triangle';
Triangle.prototype.getArea=function(){
return this.side*this.height/2;
};

var Shape=function(){};
var TwoDShape=function(){};
Shape.prototype.name='shape';
Shape.prototype.toString=function(){
return this.uber
?this.uber.toString()+', ' + this.name
:this.name;
};

extend(TwoDShape,Shape);    
var td=new TwoDShape();

td.name;//"shape"

1. Warum heißt es, dass das Namensattribut weder ein Attribut der TwoDShape()-Instanz noch ihres Prototypobjekts ist, Unterobjekte aber dennoch durch Vererbung auf dieses Attribut zugreifen können?

PHP中文网
PHP中文网

认证0级讲师

Antworte allen(2)
滿天的星座

因为子对象继承的是一整条原型链,而不是单个原型

伊谢尔伦

挂载在原型链上的属性当然不是

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!