¿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(