Programación Orientada a Objetos en JavaScript: Clases y Prototipos

Clase 39 de 55Curso de Fundamentos de JavaScript

Contenido del curso

Introducción a JavaScript

Estructuras de Control y Lógica

Manipulación de Arrays

Programación Orientada a Objetos

Asincronía en JavaScript

Resumen

Comprender cómo JavaScript maneja los objetos, los prototipos y la herencia es fundamental para escribir código limpio y reutilizable. A diferencia de otros lenguajes que trabajan exclusivamente con herencia clásica, JavaScript funciona con objetos y prototipos, un mecanismo que permite compartir propiedades y métodos entre instancias sin necesidad de duplicar código.

¿Qué es una clase constructora y por qué es importante?

Una clase constructora (o función constructora) actúa como un molde [0:24]. Dentro de ese molde se definen las propiedades y los métodos que después se utilizarán para crear instancias con información concreta. Piensa en ella como una plantilla vacía que establece la estructura, pero no los datos finales.

  • Define las características que tendrá cada instancia.
  • Contiene métodos reutilizables que no necesitan reescribirse.
  • Sirve como punto de partida para generar múltiples objetos con la misma forma.

Cada vez que se crea una clase o función constructora, JavaScript genera automáticamente un prototipo [0:46]. Este prototipo es un objeto especial que almacena todas las propiedades y métodos destinados a compartirse o heredarse en las instancias que se deriven de esa clase principal.

¿Cómo se crea una instancia a partir del molde?

Una vez definida la clase, se puede crear una instancia, es decir, un objeto concreto basado en ese molde [1:04]. Por ejemplo, a partir de la clase Persona se crea la instancia José, con datos específicos:

  • Nombre: José.
  • Edad: treinta años.
  • Altura: uno setenta.
  • Nacionalidad: colombiano.

Estos valores rellenan la estructura que la clase definió previamente. La instancia tiene identidad propia, pero su forma proviene del molde original.

¿Qué papel juega la herencia de métodos?

Aquí es donde el concepto de herencia cobra relevancia [1:20]. La clase padre contiene un método llamado saludar. Al crear la instancia de José, no es necesario volver a escribir ese método; José lo hereda directamente del prototipo de la clase constructora.

El resultado es que José puede ejecutar la acción de saludar y producir un mensaje como: «Hola, mi nombre es José, ¿cómo te llamas tú?» [1:42]. El método toma la información de la instancia y la combina con la lógica definida en la clase padre.

¿Por qué los prototipos son el corazón de JavaScript?

Mientras que la programación orientada a objetos tradicional se basa en herencia de clases, JavaScript utiliza una cadena de prototipos (prototype chain) para resolver qué propiedades y métodos están disponibles en cada objeto. Cuando se accede a un método en una instancia, el motor de JavaScript primero busca en el propio objeto; si no lo encuentra, sube por la cadena de prototipos hasta hallarlo en la clase padre.

Este mecanismo permite:

  • Reutilizar código sin duplicar métodos en cada instancia.
  • Extender funcionalidades de forma eficiente.
  • Mantener una estructura organizada donde el molde define la lógica y las instancias solo cargan sus datos particulares.

En esencia, cada instancia creada a partir de una clase constructora obtiene acceso gratuito a todos los métodos del prototipo. Esto reduce el consumo de memoria y facilita el mantenimiento del código, porque cualquier cambio en el método de la clase padre se refleja automáticamente en todas las instancias que lo heredan.

Si estás comenzando con JavaScript, practicar la creación de clases constructoras, instancias y el uso de prototipos te dará una base sólida para entender patrones más avanzados. ¿Qué dudas tienes sobre cómo funciona la herencia en tus proyectos? Comparte tu experiencia en los comentarios.