Clases en JavaScript

Las clases en JavaScript, introducidas en ES6, revolucionaron la forma en que creamos y organizamos nuestro código. Esta guía completa te ayudará a dominar las clases, desde su sintaxis básica hasta conceptos avanzados como herencia y métodos estáticos.

¿Qué son las clases?

Las clases son plantillas para crear objetos con características y comportamientos comunes. Pensemos en una clase Persona que define propiedades como nombre, edad y métodos como saludar y presentarse.

Sintaxis básica:


class Persona {
  constructor(nombre, edad) {
    this.nombre = nombre;
    this.edad = edad;
  }

  saludar() {
    console.log(`Hola, mi nombre es ${this.nombre}`);
  }
}

Lenguaje del código: JavaScript (javascript)

Creando e instanciando objetos:


const persona1 = new Persona("Juan", 25);
const persona2 = new Persona("María", 30);

persona1.saludar(); // "Hola, mi nombre es Juan"
persona2.saludar(); // "Hola, mi nombre es María"

Lenguaje del código: JavaScript (javascript)

Herencia:

Las clases pueden heredar de otras clases, reutilizando código y propiedades.


class Estudiante extends Persona {
  constructor(nombre, edad, curso) {
    super(nombre, edad);
    this.curso = curso;
  }

  estudiar() {
    console.log(`Estoy estudiando ${this.curso}`);
  }
}

const estudiante1 = new Estudiante("Ana", 20, "Ingeniería");

estudiante1.saludar(); // "Hola, mi nombre es Ana"
estudiante1.estudiar(); // "Estoy estudiando Ingeniería"

Lenguaje del código: JavaScript (javascript)

Métodos y propiedades estáticas:

Las propiedades y métodos estáticos no dependen de una instancia de la clase, sino de la clase en sí.


class Matematica {
  static PI = 3.14159;

  static sumar(a, b) {
    return a + b;
  }
}

console.log(Matematica.PI); // 3.14159
console.log(Matematica.sumar(2, 3)); // 5

Lenguaje del código: JavaScript (javascript)

Conclusión

Las clases en JavaScript son una herramienta poderosa para crear código modular, reutilizable y fácil de entender. Dominarlas te permitirá escribir código más eficiente y escalable.