JavaScript es un lenguaje establecido, pero solo agregó soporte para la programación clásica orientada a objetos (OOP) en ES6. Hasta que agregó características como declaraciones de clase, JavaScript manejaba OOP utilizando un paradigma basado en prototipos menos conocido. Sin embargo, con cualquiera de los dos enfoques, puede crear aplicaciones complejas que utilicen funciones basadas en objetos.
Un constructor en JavaScript prototípico se parece mucho a cualquier otra función. La principal diferencia es que puede usar esa función constructora para crear objetos.
¿Qué es un constructor en JavaScript?
Los constructores son uno de los conceptos fundamentales en la programación orientada a objetos. Un constructor es una función que puede usar para crear una instancia de un objeto. Además de crear un nuevo objeto, un constructor especifica las propiedades y comportamientos que le pertenecerán.
Sintaxis del constructor
funciónNombreDeConstructor() {
esta.propiedad1 = "Propiedad1";
esta.propiedad2 = "Propiedad2";
esta.propiedad3 = "Propiedad3";
}
Puede crear un constructor con el función palabra clave ya que es esencialmente como cualquier otra función. Sin embargo, los constructores se adhieren a las siguientes convenciones:
- Para distinguirlas de otras funciones, use un nombre para su constructor que comience con una letra mayúscula.
- Los constructores utilizan el este palabra clave de manera diferente. Dentro de un constructor, este se refiere al nuevo objeto que creará el constructor.
- A diferencia de las funciones de JavaScript, los constructores definen propiedades y comportamientos en lugar de devolver valores.
Uso de un constructor para crear nuevos objetos
En JavaScript, usar un constructor para crear un objeto es una tarea fácil. Aquí hay un constructor simple con una invocación que lo sigue:
funciónAlumno() {
este.nombre = "Gloria";
este.género = "Femenino";
este.edad = 19;
}
dejar estudiante femenino = nuevo Alumno();
En este ejemplo, estudiante femenina es un objeto creado a partir de la Alumno constructor. Utilizar el nuevo palabra clave para llamar a la función como constructor. Esta palabra clave le dice a JavaScript que cree una nueva instancia de Alumno. No debe llamar a esta función sin el nuevo palabra clave porque la este dentro del constructor no apuntará a un nuevo objeto. Después de la construcción, estudiante femenina tiene todas las propiedades de Alumno. Puede acceder y modificar estas propiedades como lo haría con cualquier otro objeto.
Cosas importantes que debe saber sobre los constructores de JavaScript
Trabajar con constructores puede ser muy agotador y, al mismo tiempo, puede ser una tarea fácil. Aquí hay algunas cosas importantes que cualquier desarrollador debe saber sobre trabajar con constructores.
Uso de constructores con argumentos
Puede extender un constructor para recibir argumentos. Esto es muy importante si está buscando escribir código receptivo y flexible.
Siempre que cree un objeto a partir de un constructor, el objeto heredará todas las propiedades declaradas en el constructor. por ejemplo, el estudiante femenina que creaste arriba tendrá propiedades nombre, género, y edad con valores iniciales fijos. Si bien puede cambiar cada propiedad manualmente, sería mucho trabajo si estuviera escribiendo un programa usando muchos objetos.
Afortunadamente, los constructores de JavaScript pueden aceptar parámetros, como cualquier otra función. Puedes cambiar el Alumno constructor para aceptar dos parámetros:
funciónAlumno(Nombre / Género) {
este.nombre = nombre;
este.género = género;
este.edad = 19;
}
Todos los objetos creados a partir de lo anterior tendrán edad ajustado a 19. Puede diseñar su constructor de esta manera si hay una propiedad que desea que tengan todos los objetos.
Ahora puede definir objetos únicos del mismo constructor pasando diferentes argumentos.
Los argumentos hacen que los constructores sean más flexibles. Ahorran tiempo y fomentan un código limpio.
Definición de métodos de objeto
Un método es una propiedad de objeto que es una función. Los métodos mejoran su código en OOP ya que agrega diferentes comportamientos a sus objetos. Aquí hay un ejemplo:
funciónAlumno(Nombre / Género) {
este.nombre = nombre;
este.género = género;
este.edad = 19 ;
este.decirNombre = función () {
devolver`Mi nombre es ${nombre}`;
}
}
Lo anterior agrega la función decirNombre al constructor.
Supongamos que usa este constructor para crear un objeto que almacena en una variable, estudiante femenina. A continuación, puede llamar a esta función con el siguiente código:
estudiante femenina.sayNombre()
El Prototipo
Anteriormente, creamos Alumno de manera que todas sus instancias tendrán un edad propiedad con un valor de 19. Esto resultará en tener una variable duplicada para cada Alumno instancia que creas.
Para evitar esta duplicación, JavaScript utiliza el concepto de prototipos. Todos los objetos creados a partir de un constructor comparten las propiedades de su prototipo. Puedes agregar el edad propiedad a Alumno prototipo como se muestra a continuación:
Estudiante.prototipo.edad = 19;
Al hacer esto, todas las instancias de Alumno tendrá el edad propiedad. declarando propiedades del prototipo es una forma de reducir el código duplicado en su aplicación. Hace que su código sea lo más estándar posible.
Una propiedad prototipo puede ser un objeto
Puede agregar propiedades de prototipo individualmente como se explicó anteriormente. Pero si tiene muchas propiedades para agregar, esto puede ser un inconveniente.
Como alternativa, puede contener todas las propiedades que necesita en un nuevo objeto. Al hacer esto, configurará todas las propiedades a la vez. Por ejemplo:
Estudiante.prototipo = {
edad: 19,
carrera: "Blanco",
discapacidad: "Ninguno"
}
Recuerde configurar el constructor propiedad al establecer prototipos en un nuevo objeto.
Estudiante.prototipo = {
constructor: Alumno,
edad: 19,
carrera: "Blanco",
discapacidad: "Ninguno"
}
Puede usar esta propiedad para verificar qué función constructora creó una instancia.
Supertipos y herencia
Herencia es un método que emplean los programadores para reducir los errores en sus aplicaciones. Es una forma de apegarse a la No te repitas (SECO) principio.
Supongamos que tiene dos constructores:Alumno y Maestro—que tienen dos propiedades prototipo similares.
Estudiante.prototipo = {
constructor: Alumno,decirNombre: función () {
devolver`Mi nombre es ${nombre}`;
}
}Profesor.prototipo = {
constructor: Maestro,
decirNombre: función () {
devolver`Mi nombre es ${nombre}`;
}
}
Ambos constructores definen el decirNombre método, de forma idéntica. Para evitar esta duplicación innecesaria, puede crear un supertipo
funciónIndividualDetalles(){};
DetallesIndividuales.prototipo = {
constructor: Detalles individuales,
decirNombre: función () {
devolver`Mi nombre es ${nombre}`;
}
};
A continuación, puede eliminar decirNombre de ambos constructores.
Para heredar las propiedades del supertipo, use Objeto.crear(). Establece el prototipo de ambos constructores en una instancia del supertipo. En este caso, configuramos el Alumno y Maestro prototipos a una instancia de IndividualDetails.
Aquí es:
Estudiante.prototipo = Objeto.create (IndividualDetails.prototipo);
Profesor.prototipo = Objeto.create (IndividualDetails.prototipo);
Al hacer esto, Alumno y Maestro heredar todas las propiedades del supertipo, IndividualDetalles.
Así es como se practica DRY en OOP usando supertipos.
Los constructores cambian el juego
Los constructores son un componente clave de JavaScript, y dominar su funcionalidad es crucial para desarrollar aplicaciones JavaScript orientadas a objetos. Puede usar un constructor para crear objetos que comparten propiedades y métodos. También puede utilizar la herencia para definir jerarquías de objetos.
En ES6, puede utilizar el clase palabra clave para definir clases clásicas orientadas a objetos. Esta versión de JavaScript también admite una constructor palabra clave.