Wilmer Jesús Cuevas Perdomo
PreguntaHay diferencia entre hacer: “Hija.prototype = new fn” y hacer “Hija.prototype = fn.prototype” ??
-
¿Un objeto de la función padre es lo mismo que el prototipo de la función padre?
-
¿Qué pasa si no quiero usar la función anónima que usábamos como intermediaria, me puede afectar en algo mi programa?

Cesar Mora
si, existe una gran diferencia como lo dijo @RetaxMaster, creo que el ompañero comento es muy solido y facil de entender pero aun asi quiero dejar un ejemplo:
imaginate una construccion de un edificio o apartamentos, cuando usas “Hija.prototype = new fn” estas diciendo que el departamento inicial o casa o apto como lo quieras llamar es la base para crear los demas y esa funcion dice que debes crear 100 o 20 o 2 departamentos mas igual a eso, pero sin incluir ciertas cosas como muebles, colores, ropa y demas cosas
en cambio cuando usas Hija.prototype = fn.prototype” estas diciendo que el promer departamento lo vas a clonar con todo y muebles, ropa y lo que te quieras imaginar en cuanto a estilo y toque personal, por eso es muy importante tener mucho cuidado con este tema
espero que te haya servido este ejemplo, saludos :)
Wilmer Jesús Cuevas Perdomo
Es esto nadamás, es literalmente igual que lo que hizo el profe en el curso, la unica diferencia es en lo que muestro en la anterior foto. Básicamente si tuviera que plantear la duda en forma de pregunta, sería:

Nicolás Arias González
Sí tienes razón. No había visto que estabas asignando los constructores pero, me puedes mostrar la parte donde llamas la función
heredar
De todas maneras en programación siempre habrá diferentes formas de lograr un propósito y no siempre hay una opción que claramente es "mejor" que las demás. En casos como este, yo te recomendaría irte con la opción más legible, que a simple vista sea obvio qué es lo que hace tu código.
Me gusta mucho tu curiosidad y tus ánimos de experimentar. Un saludo!
Wilmer Jesús Cuevas Perdomo
Muchas gracias por tu respuesta, entiendo perfectamente tu punto, sin embargo fíjate bien, no es el mismo ejemplo que yo estoy dando en la foto! en todos tengo en cuenta el constructor también, lo que varía es la forma de asignarle el prototipo del padre.

Nicolás Arias González
En la línea 4 debe ser
this.mayorDeEdad = (edad >= 18);
Un saludo

Nicolás Arias González
Creo que la diferencia más importante entre las opciones que presentas es que si le asignas el prototipo directamente, te saltarías el constructor, donde puede haber operaciones importantes, mira un ejemplo:
function Persona(nombre, edad) { this.nombre = nombre; this.edad = edad; this.mayorDeEdad = (edad > 18); } Persona.prototype.comprarCerveza = function() { if (this.mayorDeEdad) { console.log('Deliciosa y refrescante cerveza'); } else { console.log(this.name, 'no es mayor de edad, no puede comprar cerveza'); } } const Andrea = new Persona('Andrea', 18); Andrea.comprarCerveza(); // Deliciosa y refrescante cerveza const Bernardo = {}; Bernardo.prototype = Persona.prototype; Bernardo.name = 'Bernardo'; Bernardo.edad = 30; Bernardo.comprarCerveza(); // Bernardo no es mayor de edad, no puede comprar cerveza
Wilmer Jesús Cuevas Perdomo
¿Cual es la diferencia entre estas tres opciones? Todas me funcionaron correctamente.
Wilmer Jesús Cuevas Perdomo
Muchas gracias por responder, y ¿qué diferencia habría entre tenerlo como una nueva instancia y copiarlo directamente el mismo prototipo del padre? Yo lo hice de las dos maneras en mi programa y me funcionó igual, por eso es mi duda.

Carlos Eduardo Gomez García
Hola, si, al usar "new" estás instanciando la clase "fn", pero esa instancia se está guardando dentro de prototype de Hijo, así que digamos que de cierta manera hay una herencia, si solamente hacer fn.prototype es como copiar los prototypes de la clase padre a la clase hija tal cual