Clases y Herencia en JavaScript: Sintaxis y Aplicaciones

Clase 12 de 35Curso de ECMAScript: Historia y Versiones de JavaScript

Resumen

¿Qué son las clases en JavaScript?

Las clases en JavaScript llegaron con ECMAScript 2015, también conocido como ECMAScript 6. Son una mejora sintáctica sobre la herencia basada en prototipos que ya existía en JavaScript, haciéndola más amigable y comprensible para los desarrolladores. No introducen un nuevo modelo de herencia, simplemente optimizan la sintaxis existente. Esto ayuda a que la programación orientada a objetos sea más accesible y fácil de entender. Ahora, veamos cómo implementarlas.

¿Cómo declarar una clase y crear instancias?

Comencemos por declarar una clase básica. Utilizamos la palabra reservada class, y dentro de ella, podemos definir métodos y un constructor para inicializar los elementos de la clase.

// Declaración de una clase
class User {
}

// Instancia de la clase
const newUser = new User();

¿Cómo agregar métodos dentro de una clase?

Los métodos en una clase se definen de manera similar a funciones normales, pero sin la palabra reservada function.

// Clase con un método
class User {
  saludo() {
    return 'Hello';
  }
}

// Crear instancia y usar el método
const user1 = new User();
console.log(user1.saludo()); // Imprime Hello

¿Cuáles son las ventajas de la herencia?

La herencia permite que una clase pueda adoptar métodos y propiedades de otra clase. En JavaScript, esto se maneja al hacer múltiples instancias de una misma clase o creando jerarquías de clases.

const developer = new User();
console.log(developer.saludo()); // También imprime Hello

¿Qué es un constructor en una clase?

El constructor es un método especial que se ejecuta automáticamente al crear una nueva instancia de la clase. Sirve para inicializar propiedades de la clase.

class User {
  constructor(name) {
    this.name = name;
    console.log('Nuevo usuario creado');
  }
}

const ana = new User('Ana'); // Imprime "Nuevo usuario creado"

¿Cómo utilizar la referencia this en clases?

La referencia this dentro de una clase apunta al objeto instanciado actual, permitiendo acceder a sus propiedades y métodos.

class User {
  constructor(name) {
    this.name = name;
  }
  
  saludar() {
    return `Hello, ${this.name}`;
  }
}

const ana = new User('Ana');
console.log(ana.saludar()); // Imprime "Hello, Ana"

¿Para qué sirven los getters y setters?

Los getters y setters son métodos que permiten obtener y establecer los valores de las propiedades de una clase de forma segura.

class User {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  get userAge() {
    return this.age;
  }

  set userAge(age) {
    this.age = age;
  }
}

const david = new User('David', 15);
console.log(david.userAge); // Imprime 15
david.userAge = 20;
console.log(david.userAge); // Imprime 20

Las clases en JavaScript son una poderosa herramienta que facilita el trabajo con conceptos complejos como la herencia y el encapsulamiento. Te alientan a seguir profundizando en este fascinante mundo de la programación orientada a objetos con JavaScript y a experimentar con las diferentes funcionalidades que las clases te ofrecen. ¡Ánimo y sigue explorando!