Función constructora

Clase 73 de 80Curso de JavaScript Desde Cero

Contenido del curso

Primeros Pasos

Funciones y This

Resumen

¿Cómo crear múltiples objetos en JavaScript eficientemente?

Cuando comenzamos a explorar la programación en JavaScript, probablemente nos encontramos con la necesidad de crear y manejar múltiples objetos. Tan solo imaginar copiar y pegar un objeto 150 veces parece una tarea titánica y poco efectiva. Aquí entra en juego la magia de las funciones constructoras, una técnica poderosa y eficiente para generar múltiples instancias de objetos.

¿Qué es una función constructora y cómo se define?

Una función constructora en JavaScript es una función especial que se utiliza para crear múltiples instancias de un tipo de objeto. La clave es utilizar la palabra reservada function seguida del nombre de la función constructora, un nombre que convencionalmente inicia con una mayúscula. Aquí tienes un ejemplo:

function Persona(nombre, apellido, edad) { this.nombre = nombre; this.apellido = apellido; this.edad = edad; }

Los parámetros que se pasan a la función son usados para definir las propiedades del objeto. La palabra this se refiere al objeto que será creado, permitiendo así asignar las propiedades del nuevo objeto.

¿Cómo se crean instancias de un objeto usando new?

Para crear diferentes personas de manera programática, utilizamos el operador new junto con la función constructora. Este operador crea un nuevo objeto con el prototipo de la función y ejecuta la función constructora para inicializar la instancia. Aquí te muestro cómo:

const persona1 = new Persona('Juan', 'Pérez', 20); const persona2 = new Persona('Diego', 'Granda', 35);

Cada instancia es ahora un objeto único basado en la plantilla que define nuestra función constructora.

¿Cómo agregar propiedades adicionales a una instancia de objeto?

Puedes añadir propiedades individualmente a una instancia sin afectar a otras instancias creadas desde la misma función constructora. Por ejemplo:

persona1.nacionalidad = 'mexicano';

Esta nueva propiedad nacionalidad solo existe en persona1 y no en persona2 u otras instancias, a menos que se le agregue la misma propiedad de igual manera.

¿Cómo compartir métodos entre instancias?

Para añadir métodos que sean compartidos por todas las instancias de un objeto, se utiliza el objeto prototype. Este enfoque aprovecha la herencia prototípica de JavaScript, permitiendo a cada instancia acceder a métodos comunes:

Persona.prototype.saludar = function() { console.log(`Hola, me llamo ${this.nombre} ${this.apellido}`); };

Con este método saludar agregado al prototipo de Persona, todas las instancias pueden ahora usarlo:

persona1.saludar(); // Hola, me llamo Juan Pérez persona2.saludar(); // Hola, me llamo Diego de Granda

Este método se define una sola vez y está disponible para todos los objetos creados con dicha función constructora, optimizando memoria y mantenimiento.

¿Cuándo utilizar funciones constructoras?

Las funciones constructoras son útiles cuando necesitas:

  • Crear múltiples objetos similares con las mismas propiedades y métodos.
  • Reutilizar lógica de inicialización para varios objetos.
  • Facilitar la lectura del código mediante una estructura consistente para objetos similares.

Esta técnica es especialmente útil al manipular grandes volúmenes de datos al programar en JavaScript. Con funciones constructoras, no solo optimizas el código, sino que también mantienes la escalabilidad y eficiencia de tus aplicaciones. Integramos así mayor lógica de negocio y diferenciamos cuáles propiedades deben ser compartidas y cuáles son exclusivas de una instancia.