Desde el año 2015 el estándar de Javascript nos ha dado lo que se conoce como azúcar sintáctico, podemos escribir clases, sin embargo esas clases las va a compilar Javascript a prototipos por detrás.

En este artículo vamos a simplificar lo que vimos en los 2 artículos anteriores. Las clases no reciben parámetros, tienen un método especial denominado constructor() que es el que va a recibir dichas propiedades. Aunque escribimos clases, es un engaño a nivel de sintaxis. Lo que simplifica las clases es la escritura de código.

Ejm

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Clases y Herencia</title>
  </head>

  <body>
    <h1>Clases y Herencia</h1>

    <script>
      class Persona{
        constructor(nombre, genero) {
          this.nombre = nombre;
          this.genero = genero;
        }

        hablar() {
          console.log("Estoy hablando");
        }
      }

      const francisco = new Persona("Francisco", "Chico");
      console.log(francisco);
      francisco.hablar();

      // COMO HAGO LA HERENCIA
      class Francisco extends Persona {
        constructor(nombre, genero, edad) {
          super(nombre, genero);
          this.edad = edad;
        }

        hablar() {
          console.log("Mi nombre es Francisco");
        }
        caminar() {
          console.log("Estoy caminando");
        }
      }

      const francisco = new Francisco("Francisco", "Macho", 51);
      console.log(francisco);
      francisco.hablar();
    </script>
  </body>
</html>

Podemos ver como con clases se simplifica la escritura de las funciones prototípicas.