Sto imparando su prototipi Javascript e ha fatto un violino (http://jsfiddle.net/3MuZa/1/) con questo javascript:Perché console nota che ho modificato il mio prototipo prima di me?
function Animal(name, sound) {
this.name = name;
this.sound = sound;
}
var dog = new Animal("Dog", "Bark");
console.debug(dog.__proto__);
Animal.prototype.makeSound = function() {console.log(this.sound);};
È interessante notare che, console.debug(dog.__proto__);
rivela che makeSound
è un metodo del prototipo della classe Animal.
Tuttavia, aggiungo quel metodo al prototipo in una riga successiva. Perché Console rileva che il prototipo ha un metodo makeSound
se il flusso di controllo non è ancora arrivato nel mio codice?
Impostare un punto di interruzione su quest'ultima riga. Esegui a quel punto di rottura. Ispeziona la console. Vedrai che 'makeSound' non è presente. –
Grazie! In effetti, impostare un punto di interruzione ed esaminare le variabili locali rivela che il metodo 'makeSound' non esiste. –