
Originariamente inviata da
ThankGod
Buonasera ragazzi,
ormai lo sapete che mi sono intrippata con Javascript e che ho ogni tanto bisogno di un piccolo aiuto!
Se qualche buon anima avesse il tempo di spiegarmi cosa è un prototipo????
In sostanza credo di aver capito che i costruttori altro non sono che funzioni. Al loro interno abbiamo una serie di incrementi dell'oggetto this. Quando usiamo new funzioneCostruttore(), succede che viene creato un oggetto e 'passato' al costruttore come oggetto del contesto esecutivo, pertanto tutti gli incrementi fatti con this hanno effetto su questo nuovo oggetto.
Esempio
function Quadrato(lato){
this.figura = "Quadrato";
this.lato=lato;
this.perimetro = function(){return lato*4}
}
var quadrato1 = new Quadrato(8) //ritorna un oggetto (quadrato1) con proprietà e metodi definiti nel costruttore
E fin qui mi pare di esserci (correggetemi se sbaglio).
Poi si inizia a parlare della proprietà prototype del costruttore... e mi inizio un pò a perdere....



Grazie a tutti!
Il prototipo è proprio "Quadrato", il costruttore.
codice:
function Quadrato(lato){
this.figura = "Quadrato";
this.lato=lato;
this.perimetro = function(){return lato*4}
}
Come suggerisce il nome "prototipo", Quadrato è un modello che verrà usato per tutte le istanze, appunto un prototipo.
La proprietà "prototype" ti permette di modificare il prototipo.
Se tu avessi:
codice:
var quadrato1 = new Quadrato(8)
e volessi aggiungere la proprietà "colore", scriveresti:
codice:
quadrato1.colore='rosso';
Non potresti però usare lo stesso sistema per modificare il prototipo, in quanto non è un oggetto.
Per modificare il prototipo puoi usare il metodo "prototype":
codice:
function Quadrato(lato){
this.figura = "Quadrato";
this.lato=lato;
this.perimetro = function(){return lato*4}
}
Quadrato.prototype.colore = "Rosso";
var square= new Quadrato(5);
alert(square.colore);
Oltre a poter aggiungere delle proprietà, con il metodo prototype, puoi anche aggiungere metodi al tuo prototipo:
codice:
function Quadrato(lato){
this.figura = "Quadrato";
this.lato=lato;
this.perimetro = function(){return lato*4}
}
Quadrato.prototype.area= function(){
return this.lato*this.lato;
}