Ho trovato questo articolo sul web che mi confonde molto.
http://jonathancreamer.com/object-literals-and-prototypes-in-javascript/
Quando eseguo il codice seguente
case2:
Pizza.prototype = {
divvyUp: function () {
return this.type + " pizza which has " + this.slices +" slices";
}
};
Versus case1:
Pizza.prototype.divvyUp = function () {
return this.type + " pizza which has " + this.slices +" slices";
};
L'enigma è che però Pizza.prototype.costruttore in case1: è la funzione di costruzione e Pizza.prototype.constrcutor in case2: è la funzione object () e case2: disaccoppia la catena di ereditarietà. Ma allora perché quando eseguo salsicciaPizza.divvyUp () per entrambi i casi ottengo lo stesso risultato. Tuttavia, quando case2: disaccoppia la catena di ereditarietà e non fa più riferimento al costruttore di Pizza (), perché ottengo il risultato per case2 simile a case1
risposte:
2 per risposta № 1Il primo sostituirà il intero prototype
con un oggetto contenente una singola funzione - divvyUp
.
Quest'ultimo modificherà il file esistente prototype
, AGGIUNGERE (o sostituire) la funzione divvyUp
.
Provare
console.log(Pizza.prototype);
dopo ogni e avere un lookie.