Mi rendo conto che questo è stato chiesto centinaia di volte, però, io non riesco a cogliere il concetto di "perché" prototipi in JavaScript sono propri, come apposto a imitare le classi (sì , So che JavaScript è un linguaggio basato su prototipi - ho raccolto così tanto).Cercando di capire il punto di prototipi in JavaScript
Come molte altre persone che cercano di rendere JavaScript un linguaggio quotidiano che uso, sono abituato al normale stile di classe OOP, come ho giocato in Java (e ho usato classi in ActionScript e PHP). Tuttavia, mentre I penso Capisco come funzionano i prototipi, non riesco a capire perché sono necessari.
Ecco il mio script di esempio di come sto attualmente comprendere prototipi in JavaScript:
var Apple = function() {
// An apple?
};
Apple.prototype.color = "red";
Apple.prototype.changeColor = function(new_color) {
this.color = new_color;
};
Apple.prototype.getColor = function() {
alert('color: '+this.color);
};
var apple1 = new Apple();
var apple2 = new Apple();
apple2.changeColor("green");
apple1.getColor();
apple2.getColor();
... Avevo pensato che forse il prototipo significava che condivideva lo stesso oggetto invece di creare un nuovo oggetto ogni volta - tuttavia, ovviamente non è il caso poiché entrambi apple1 e apple2 hanno colori diversi, ancora (dopo aver eseguito la sceneggiatura).
Poi ho scritto in ciò che è più di uno script orientato agli oggetti:
var Apple = function() {
this.color = "red";
this.changeColor = function(new_color) {
this.color = new_color;
};
this.getColor = function() {
alert('color: '+this.color);
};
};
var apple1 = new Apple();
var apple2 = new Apple();
apple2.changeColor("green");
apple1.getColor();
apple2.getColor();
con gli stessi risultati (come previsto). ... Perché quest'ultimo codice non è raccomandato? Non ho problemi a usare i prototipi (supponendo che li abbia usati correttamente), ma ho bisogno di capire il concetto di "perché".
... Qualsiasi aiuto?
Questo ha davvero aiutato moltissimo; grazie. Facendo riferimento a "Apple.prototype.color", posso vedere che è ancora "rosso", che riconferma il mio pensiero originale sui prototipi che fanno riferimento a un singolo oggetto. È ancora un po 'di confusione, dato che voglio specificare i miei metodi direttamente in ... beh, funzioni, ma penso che potrei esserne preso. Grazie ancora. – clicheName
@clicheName: prego. Ho aggiornato con un po 'di informazioni in più, ma sembra che tu abbia capito. – user113716
sto comprendendo correttamente? Sento, sono in qualche modo come variabili statiche e metodi in java che sono condivisi tra gli oggetti ... – Vishwanath