javascript - Questions sur l'héritage
PHP中文网
PHP中文网 2017-06-15 09:21:31
0
2
579
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. Pourquoi dit-on que l'attribut name ne sera ni un attribut de l'instance TwoDShape() ni son objet prototype, mais que les sous-objets peuvent toujours accéder à cet attribut par héritage ?

PHP中文网
PHP中文网

认证0级讲师

répondre à tous(2)
滿天的星座

Parce que l'objet enfant hérite d'une chaîne entière de prototypes, pas d'un seul prototype

伊谢尔伦

Les propriétés montées sur la chaîne prototype ne le sont certainement pas

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal