JavascriptProva

mercoledì 8 febbraio 2012

Costruttori, oggetti, metodi e proprietà...

Seguiamo un po' di esempi da questo sito per capire meglio questo prototype...

<script>
function Veicolo(passeggeri){
 this.velocita=0;
 this.passeggeri=0;
 if(passeggeri>0)
  this.passeggeri=passeggeri;
}
var auto=new Veicolo(1);
alert(auto.passeggeri);
</script>
Questo sarebbe il costruttore di un oggetto.
Ossia, qualcosa che assomiglia alle classi, credo...

Ha due proprietà, l'una che prende il valore del parametro e l'altra che è impostata a zero senza venir modificata inizialmente all'atto in cui si istanzia l'oggetto.
Ecco, adesso modifico la proprietà passeggeri subito e poi modifico l'altra:
<script>
function Veicolo(passeggeri){
 this.velocita=0;
 this.passeggeri=0;
 if(passeggeri>0)
  this.passeggeri=passeggeri;
}
var auto=new Veicolo(1);
var auto2=new Veicolo(1);
auto2.velocita=13;
alert("auto: velocità "+auto.velocita+" passeggeri "+auto.passeggeri);
alert("auto2: velocità "+auto2.velocita+" passeggeri "+auto2.passeggeri);
</script>

Aggiungiamo un metodo...

Ecco: aggiungiamo il metodo scritto all'esterno del costruttore. Provo a esercitarmi...
<script>
function carica(passeggeri){
 this.passeggeri+=passeggeri;
}


function Veicolo(passeggeri){
 this.velocita=0;
 this.passeggeri=0;
 if(passeggeri>0)
  this.passeggeri=passeggeri;

 this.carica=carica;
}
var auto=new Veicolo(1);
alert("auto: velocità "+auto.velocita+" passeggeri "+auto.passeggeri);
auto.carica(4);
alert("auto: velocità "+auto.velocita+" passeggeri "+auto.passeggeri);

</script>
Funziona egregiamente!
Bene... finora niente di particolarmente trascendentale, e mi sono esercitato un po' sull'aggiungere metodi scritti all'esterno del costruttore stesso.
Ecco invece l'aggiunta di un metodo scritto all'interno del costruttore:
<script>


function Veicolo(passeggeri){
 this.velocita=0;
 this.passeggeri=0;
 if(passeggeri>0)
  this.passeggeri=passeggeri;

 this.carica=function(passeggeri){
  this.passeggeri+=passeggeri;
 }

}
var auto=new Veicolo(1);
alert("auto: velocità "+auto.velocita+" passeggeri "+auto.passeggeri);
auto.carica(4);
alert("auto: velocità "+auto.velocita+" passeggeri "+auto.passeggeri);

</script>
Questo si chiama incorporare il metodo all'interno della funzione costruttore.
La sua utilità è evitare i conflitti nel caso si debba creare un metodo con nome analogo per un altro oggetto.

Nessun commento:

Posta un commento