Ciao a tutti, sto cercando di capire come funziona l'oggetto prototype di javascript, viene utilizzato molto frequentemente in applicazioni complesse che fanno uso della programmazione ad oggetti, ma c'è un dubbio che mi perseguita...
Spesso trovo qualcosa di questo tipo:
codice:
function Veicolo(passeggeri) {
this.velocita = 0;
this.passeggeri = 0;
}
Veicolo.prototype.carica = function(passeggeri) {
if(passeggeri > 0)
this.passeggeri += passeggeri;
}
In pratica definisco prima la "classe" Veicolo con 2 attributi, successivamente aggiungo a runtime il metodo carica.
Spessissimo ho visto fare così, la classe col solo costruttore e tutti i metodi successivi aggiunti col prototype.
Quello che non ho capito è: se definisco la classe in questo modo:
codice:
function Veicolo(passeggeri) {
this.velocita = 0;
this.passeggeri = 0;
this.carica = function(passeggeri) {
if(passeggeri > 0)
this.passeggeri += passeggeri;
}
}
Non ottengo una risultato analogo? Anzi, includendo il metodo all'interno della dichiarazione di Veicolo si intuisce meglio qual'è la definizione della classe... Ma allora perché spesso non fanno così? Che vantaggi porta la prima tecnica rispetto alla seconda?