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 Mengapa dikatakan bahawa atribut nama tidak akan menjadi atribut bagi contoh TwoDShape() mahupun objek prototaipnya, tetapi sub-objek masih boleh mengakses atribut ini melalui warisan?
Kerana objek kanak-kanak mewarisi keseluruhan rantai prototaip, bukan satu prototaip
Sudah tentu sifat yang dipasang pada rantai prototaip tidak