¿Cuál es la diferencia entre los siguientes fragmentos de código?
function Student(name, grade) { this.name = name this.grade = grade } Student.prototype.sayName = function() { console.log(this.name) } Student.prototype.goToProm = function() { console.log("Eh.. go to prom?") } function Student(name, grade) { this.name = name this.grade = grade this.sayName = function() { console.log(this.name); } this.goToProm = function() { console.log("Eh.. go to prom?") } }Aparentemente, la primera forma es mejor:
Si está utilizando constructores para crear sus objetos, es mejor definir funciones en el prototipo de ese objeto . Si lo hace, significa que una única instancia de cada función se compartirá entre todos los objetos de Estudiante. Si declaramos la función directamente en el constructor, como hicimos cuando se introdujeron por primera vez, esa función se duplicaría cada vez que se crea un nuevo Estudiante. En este ejemplo, eso realmente no importaría mucho, pero en un proyecto que está creando miles de objetos, realmente puede marcar la diferencia.
¿Alguien puede explicar esto un poco más?
Según tengo entendido, si lo agregamos al prototipo (padre) de Student cuando creamos nuevos objetos, solo se crearán con nombre y calificación en lugar de que cada objeto asigne más datos en el montón para contener las definiciones de funciones para sayName y goToProm y luego pueden utilizar las funciones que se definen en el padre de Estudiante.
¿Es esta la razón por la cual?