function Veicolo(passeggeri){
this.velocita=0;
this.passeggeri=0;
this.carica=function(passeggeri){
if(passeggeri>0) this.passeggeri+=passeggeri;
}
this.carica(passeggeri);
}
var Auto=new Veicolo(1);
Auto.carica(2);
document.write(Auto.passeggeri+"<br>");
...col medesimo risultato.
Io vado più lento del tutorial:
Creo un costruttore Aereo, al quale attribuisco una funzione che fa parte di Veicolo, e vediamo cosa succede:
function Aereo(passeggeri){ this.passeggeri=0; this.carica(passeggeri); } var Jumbo=new Aereo(250); document.write(Jumbo.passeggeri+"<br>");E ottengo un errore dal web developer di FireFox:
TypeError: this.carica is not a functionE certo: il costruttore Aereo non ha la funzione carica()!
Posso inserirla nel prototipo:
function Veicolo(passeggeri){
this.velocita=0;
this.passeggeri=0;
this.carica=function(passeggeri){
if(passeggeri>0) this.passeggeri+=passeggeri;
}
this.carica(passeggeri);
}
function Aereo(passeggeri){
this.passeggeri=0;
this.carica(passeggeri);
}
Aereo.prototype.carica=function(passeggeri){
if(passeggeri>0) this.passeggeri+=passeggeri;
}
var Jumbo=new Aereo(250);
document.write(Jumbo.passeggeri+"<br>");
...e funziona, stavolta:
250Però il tutorial mi pone un mezzo per ereditare un altro costruttore mediante il prototipo:
function Veicolo(passeggeri){
this.velocita=0;
this.passeggeri=0;
this.carica=function(passeggeri){
if(passeggeri>0) this.passeggeri+=passeggeri;
}
this.carica(passeggeri);
}
function Aereo(passeggeri){
this.passeggeri=0;
this.carica(passeggeri);
}
Aereo.prototype=new Veicolo();
var Jumbo=new Aereo(250);
document.write(Jumbo.passeggeri+"<br>");
Che funziona!
250Benissimo!
Dunque ho la possibilità di ereditare tramite prototipo.
Il prototipo della classe Veicolo ha proprietà e metodi del costruttore.
Riportare nel prototipo di una nuova classe il prototipo di una classe dalla quale si voglia ereditare è possibile con questa formula!
Nessun commento:
Posta un commento