Avatar ·

¿Cómo funciona .prototype en JavaScript? Explica con ejemplos

¡Hola a todos! Empecé a estudiar JavaScript y no puedo entender los prototipos. Leí la documentación, vi videos, pero igual me confundo. Aquí tengo este código: ```javascript function Animal(name) { this.name = name; } Animal.prototype.sayHi = function() { console.log('Hola, soy ' + this.name); }; let cat = new Animal('Barsik'); cat.sayHi(); // "Hola, soy Barsik" ``` Entiendo que `sayHi` aparece en todos los objetos creados con `new Animal`. Pero, ¿para qué sirve `.prototype`? ¿Por qué no puedo simplemente agregar el método directamente en el constructor? ```javascript function Animal(name) { this.name = name; this.sayHi = function() { console.log('Hola, soy ' + this.name); }; } ``` ¿Cuál es la diferencia? ¿Y qué es `__proto__`? He visto que a veces lo usan, y a veces `.prototype`. ¿Son lo mismo? También me confunde la cadena de prototipos. Cuando escribo `cat.toString()`, ¿de dónde viene ese método si no lo definí? ¿Y cómo funciona `Object.create(