Métodos y herencia prototípica en JavaScript
Clase 41 de 55 • Curso de Fundamentos de JavaScript
Resumen
¿Cómo crear métodos especiales en una instancia existente?
Al trabajar con instancias específicas de una clase en JavaScript, a veces necesitamos métodos únicos que no fueron definidos en la clase constructora original. Para abordar esta necesidad, es posible agregar nuevos métodos directamente a una instancia. Para llevar a cabo esto, simplemente declaramos el método como una función asociada a la instancia.
perro1.nuevoMetodo = function() {
console.log("Este es un nuevo método.");
};
Este enfoque añade el método solo a perro1
, haciendo que otras instancias no lo tengan. Aunque funcional para escenarios específicos, este método no es elegante ni eficiente si queremos que todas las instancias compartan el mismo comportamiento.
¿Qué es el prototype y cómo se utiliza para agregar métodos?
El prototype en JavaScript es una herramienta fundamental para compartir métodos y propiedades a través de múltiples instancias de una clase constructora. Si buscamos que un método esté disponible para cada instancia de una clase, se debe añadir directamente al prototipo de esa clase.
Perro.prototype.segundoMetodo = function() {
console.log("Este es otro nuevo método.");
};
Con este enfoque, cualquier instancia de Perro
, ya existente o creada en el futuro, podrá acceder a segundoMetodo
. Esta técnica es esencial para la economía de memoria y eficiencia, ya que las funciones compartidas se almacenan en un solo lugar en la memoria.
¿Qué es una cadena de prototipos en JavaScript?
La cadena de prototipos es un concepto clave que explica cómo se heredan métodos y propiedades en JavaScript. Cuando se intenta acceder a una propiedad o método de un objeto, JavaScript primero busca en el propio objeto. Si no lo encuentra, sube por la cadena de prototipos hasta encontrarlo o llegar a null
.
- Perro1 (instancia): No almacena métodos en el prototipo directamente.
- Perro (prototipo de clase): Aquí se encuentran los métodos compartidos por todas las instancias de
Perro
. - Animal (clase base): Es la clase de la que
Perro
podría extenderse. - Object (objeto global): La raíz de todos los objetos en JavaScript.
Este sistema de próxeda permite una distribución eficaz de métodos, optimizando recursos sin replicar funciones en cada instancia.
¿Cómo visualizar la cadena de prototipos?
Para entender visualmente cómo funciona una cadena de prototipos, podemos inspeccionar el prototipo de una instancia. Utilizamos Object.getPrototypeOf()
para seguir la cadena.
let prototipoActual = Object.getPrototypeOf(perro1);
while (prototipoActual) {
console.log(prototipoActual);
prototipoActual = Object.getPrototypeOf(prototipoActual);
}
Este código recorre la cadena de prototipos, mostrando cómo perro1
está ligado al prototipo de Perro
, luego a Animal
y finalmente a Object
.
Este sistema es esencial para aprovechar al máximo las capacidades de JavaScript, permitiendo herencia y métodos compartidos sin la duplicación innecesaria de datos. Aprender a usar prototipos eficientemente es un paso importante en el camino de todo desarrollador de JavaScript. ¡Sigue practicando y explorando para convertirte en un mejor programador!