preloader

Introducción a class en JavaScript

Introducción a class

En el ámbito de la informática, una clase actúa como una plantilla que define la estructura y el comportamiento de los objetos que se crearán basados en ella. En JavaScript moderno, la introducción de la palabra clave class proporciona una forma más avanzada y organizada de crear y gestionar objetos orientados a objetos.

Sintaxis Básica de class

La sintaxis básica para definir una clase en JavaScript es la siguiente:

				
					class Car {
  // Constructor
  constructor(make, model) {
    this.make = make;
    this.model = model;
  }

  // Métodos de instancia
  displayInfo() {
    console.log(`Este es un ${this.make} ${this.model}`);
  }

  // Otros métodos
  startEngine() {
    console.log('El motor ha arrancado');
  }
}

				
			

Para crear una nueva instancia de la clase Car y usar algunos métodos adicionales:

				
					let myCar = new Car('Toyota', 'Corolla');
myCar.displayInfo(); // Salida: Este es un Toyota Corolla
myCar.startEngine(); // Salida: El motor ha arrancado

// Crear otra instancia de Car
let anotherCar = new Car('Ford', 'Mustang');
anotherCar.displayInfo(); // Salida: Este es un Ford Mustang

				
			

Entendiendo class

Es importante entender que, en JavaScript, una class en realidad es una función. Al declarar una clase Car, internamente se crea una función llamada Car. Los métodos definidos dentro de la clase, como constructor, displayInfo, y startEngine, se agregan al prototipo de esta función.

Constructor y Métodos de Instancia

El método constructor es especial en una clase, ya que se llama automáticamente cuando se crea una nueva instancia de la clase. Permite inicializar las propiedades del objeto. Por ejemplo, en la clase Car, constructor inicializa las propiedades make y model.

Los métodos como displayInfo y startEngine son métodos de instancia, lo que significa que están disponibles en cada instancia creada a partir de la clase Car.

Evitando Errores Comunes

Es importante recordar que dentro de la declaración de una clase, no se deben incluir comas entre los métodos, ya que no es una lista de propiedades como en un objeto literal. Cada método debe estar definido como una función en su propia sección dentro de la clase.

				
					class Animal {
  constructor(species) {
    this.species = species;
  }

  displaySpecies() {
    console.log(`Este es un animal de la especie ${this.species}`);
  }

  makeSound() {
    console.log('Hace un sonido');
  }
}

let lion = new Animal('León');
lion.displaySpecies(); // Salida: Este es un animal de la especie León
lion.makeSound(); // Salida: Hace un sonido

				
			

Clases como Funciones y prototype

A nivel de implementación, cuando se define una clase Animal, JavaScript crea una función Animal, y cualquier método definido dentro de la clase se agrega al prototype de esta función. Por lo tanto, los métodos como displaySpecies y makeSound se convierten en métodos disponibles para todas las instancias de Animal.

Comparación con Funciones Regulares

Si bien se puede lograr el mismo comportamiento utilizando funciones constructoras y prototype, la sintaxis de class ofrece una forma más clara y concisa de definir y organizar la lógica de un objeto y sus métodos.

				
					// Usando funciones constructoras y prototype
function Rectangle(width, height) {
  this.width = width;
  this.height = height;
}

Rectangle.prototype.getArea = function() {
  return this.width * this.height;
};

let rect = new Rectangle(5, 10);
console.log(rect.getArea()); // Salida: 50

				
			

Otras Características de las Clases

Las clases en JavaScript no son solo una sintaxis más limpia; también ofrecen características adicionales como:

  • Getters y Setters: Permiten controlar el acceso a las propiedades del objeto.
  • Métodos con Nombre Calculado: Permite la definición dinámica de nombres de métodos.
  • Campos de Clase: Permite definir propiedades directamente en la clase.

Resumen

La sintaxis class en JavaScript proporciona una forma más estructurada y eficiente de crear y gestionar objetos. Aunque internamente sigue utilizando funciones y prototipos, la declaración de class ofrece una manera más legible y organizada de trabajar con programación orientada a objetos en JavaScript.

Related Post

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *