Dunque, che cosa avevo fatto prima?
Avevo imparato come si aggiungono dei metodi a una funzione, i quali possono essere esterni o interni alla funzione stessa. Per evitare eventuali conflitti può essere il caso di definirli all'interno della funzione oggetto.
Ora cerchiamo di vedere questo prototipo.
Avevo una "classe" Veicolo:
<script> function Veicolo(passeggeri){ this.velocita=0; this.passeggeri=0; if(passeggeri>0) this.passeggeri=passeggeri; this.carica=function(passeggeri){ this.passeggeri+=passeggeri; } } </script>Ora io creo una classe Aereo:
function Aereo(passeggeri){ this.altitudine=0; this.decolla=function(){ this.altitudine=10; } }Questa classe non ha la proprietà velocita della classe Veicolo.
Ora provo a creare un oggetto Aereo
jumbo=new Aereo(3); alert(jumbo.velocita);E ottengo una casella di testo con scritto undefined.
Ora invece rendo la classe Aereo "discendente" della classe "Veicolo". Il codice è questo (in cui do alla proprietà velocita della classe Veicolo un valore diverso da zero, giusto per essere sicuro che la cosa funzioni):
<script>
function Veicolo(passeggeri){
this.velocita=5;
this.passeggeri=0;
if(passeggeri>0)
this.passeggeri=passeggeri;
this.carica=function(passeggeri){
this.passeggeri+=passeggeri;
}
}
function Aereo(passeggeri){
this.altitudine=0;
this.decolla=function(){
this.altitudine=10;
}
}
Aereo.prototype=new Veicolo();
jumbo=new Aereo(3);
alert(jumbo.velocita);
</script>
...e ottengo come risultato una casella di testo con il valore 5, in quanto essendo ora la classe Aereo "discendente" della classe Veicolo ne eredita la proprietà velocita.
Ecco fatto un primo passo nell'ereditarietà in Javascript!
Nessun commento:
Posta un commento