Según mi conocimiento, los prototipos permiten que un objeto JS herede propiedades y métodos de otro. En el siguiente programa, estoy definiendo una función de constructor y luego agrego la propiedad 'edad' en su objeto prototipo. A continuación, cambié la propiedad de edad del primer objeto. Cuando muestro datos de la propiedad de edad de primero y segundo, NodeJS muestra 30 y 20.
Entonces, ¿el prototipo de cliente1 y cliente2 no hace referencia al mismo objeto?
function Customer(name) { name } Customer.prototype.age = 20; const customer1 = new Customer('customer1'); const customer2 = new Customer('customer1'); customer1.age = 30; console.log(customer1.age); //Return: 30 console.log(customer2.age); //Return: 20
Cuando solicita una propiedad en un objeto, JavaScript verifica ese objeto para ver si existe.
Si lo hace, le da el valor de esa propiedad.
Si no existe, obtiene el objeto prototipo y busca una propiedad con ese nombre. (Y si eso no existe, verifica ese prototipo de objetos, y así sucesivamente y hasta que encuentra una propiedad o se queda sin objetos prototipo).
El prototype es una referencia al mismo objeto para ambas instancias de Customer , pero cuando escribes customer1.age , lo estás escribiendo en customer1 y no en el prototipo.