Saltar al contenido

Profundización en los constructores de JavaScript y el operador new

Introducción a los constructores y el operador new

En JavaScript, los constructores son funciones diseñadas para inicializar objetos recién creados. Juegan un papel fundamental en la programación orientada a objetos al permitir a los desarrolladores definir propiedades y comportamientos que los objetos de una determinada clase deben tener. El operador new se utiliza para crear una instancia de un objeto basado en una función constructora, configurando un nuevo entorno de objeto basado en el prototipo especificado y ejecutando el constructor para inicializar el nuevo objeto.

Cómo funcionan los constructores

Una función constructora en JavaScript se parece a cualquier otra función, pero por convención se nombra con una letra mayúscula para distinguirla de las funciones normales. Cuando el operador new invoca una función constructora, ocurren varios procesos:

  1. Creación de un nuevo objeto: JavaScript crea automáticamente un nuevo objeto por ti.
  2. Configuración del prototipo: Este nuevo objeto se configura para seguir una plantilla, que es el prototipo de la función constructora. Esto significa que hereda las propiedades y métodos definidos allí.
  3. Ejecución del constructor: La función constructora se ejecuta con los argumentos que pasas, y dentro de esta función, this se refiere al nuevo objeto que acaba de ser creado.
  4. Devolución del objeto: Después de que el constructor cumple su función, el nuevo objeto se devuelve automáticamente, a menos que devuelvas explícitamente un objeto diferente desde el constructor.

INFO

JavaScript moderno utiliza la sintaxis de clases para definir constructores y métodos de manera más intuitiva. Esto proporciona un enfoque más directo y basado en clases, similar a otros lenguajes de programación.

Ejemplo: Función constructora básica


Output appears here after Run.

Explicación: En este ejemplo, User es una función constructora que inicializa name, age y un método greet en los objetos recién creados. La sentencia new User('John', 30) crea una nueva instancia de User con el nombre "John" y edad 30.

Uso de constructores para objetos complejos

Los constructores pueden utilizarse para configurar relaciones más complejas entre objetos, incluyendo métodos que interactúan con otras propiedades de los objetos.

Ejemplo: Constructor con métodos


Output appears here after Run.

Explicación: El constructor Car configura cada objeto de coche con propiedades específicas y un método que muestra información sobre el coche.

Ejemplo: Métodos de prototipo


Output appears here after Run.

Explicación: Al agregar introduce al prototipo de Employee, todas las instancias comparten el mismo método, lo cual es más eficiente en memoria que definirlo directamente en el constructor.

WARNING

Se recomienda utilizar clases ES6 para definir objetos y constructores para un código más limpio y legible.

Mejores prácticas con constructores

Al trabajar con constructores en JavaScript, adherirse a ciertas mejores prácticas puede mejorar significativamente la legibilidad, eficiencia y escalabilidad de tu código. A continuación, se detallan estas prácticas con ejemplos y explicaciones:

1. Convención de nombres

Mejor práctica: Siempre comienza los nombres de los constructores con una letra mayúscula para diferenciarlos de las funciones normales. Esta es una convención común en JavaScript y muchos otros lenguajes de programación que ayuda a los desarrolladores a identificar rápidamente las funciones constructoras.

Ejemplo:


Output appears here after Run.

Explicación: La función constructora Laptop comienza con una letra mayúscula, lo que indica que está destinada a ser utilizada con el operador new para crear nuevos objetos.

2. Separación de lógica

Mejor práctica: Para los métodos que no requieren acceso a datos de instancias individuales, defínelos en el prototipo del constructor en lugar de dentro del constructor mismo. Este enfoque ahorra memoria porque todas las instancias comparten el mismo método en lugar de que cada instancia cree una nueva función en memoria.

Ejemplo:


Output appears here after Run.

Explicación: El método describe se agrega al prototipo de Book, lo que significa que todas las instancias de Book comparten el mismo método describe. Esto es más eficiente que si describe se definiera dentro del constructor, lo que resultaría en una nueva función para cada instancia de libro.

3. Valores de retorno

Mejor práctica: Evita devolver valores desde los constructores. Los constructores de JavaScript devuelven automáticamente la instancia del nuevo objeto, a menos que se devuelva explícitamente un objeto diferente. Devolver valores que no sean objetos (como una cadena o un número) no tendrá efecto, y la nueva instancia seguirá siendo devuelta.

Ejemplo:


Output appears here after Run.

Explicación: A pesar de intentar devolver una cadena desde el constructor Player, JavaScript ignora este valor de retorno porque no es un objeto. La nueva instancia de Player se devuelve como se esperaba.

Conclusión

Comprender y utilizar los constructores y el operador new en JavaScript es esencial para una programación orientada a objetos efectiva. Al seguir las convenciones y mejores prácticas descritas aquí, los desarrolladores pueden crear código organizado, eficiente y escalable. Los constructores proporcionan un mecanismo poderoso para inicializar nuevos objetos y definir su comportamiento de manera estructurada e intuitiva.

Practice

¿Qué ocurre cuando se ejecuta una función con 'new' en JavaScript?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.