004. Métodos estáticos, getters y setters

Si venimos de otros lenguajes de programación, hay algunas características que en Javascript no tenemos, como por ejm las clases privadas. Una clase privada es aquella que los atributos y métodos que tengamos dentro de la clase sólo se puedan ver dentro del cuerpo de la clase. Todas las clases que generamos en Javascript son públicas, por ello no es necesario ponerle la palabra public.

Métodos estáticos

Hay ciertas características que sí existen en la escritura de clases en Javascript, una de ellas son los métodos estáticos. Los métodos estáticos son aquellos que se pueden ejecutar sin la necesidad de instanciar la clase. La sintaxis es la siguiente.

Ejm

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Métodos estáticos</title>
  </head>

  <body>
    <h1>Métodos estáticos</h1>

    <script>
      class Nombre {
        constructor(nombre, apellido) {
          this.nombre = nombre;
          this.apellido = apellido;
        }

        mostrar() {
          console.log(`Nombre: ${this.nombre} - Apellido: ${this.apellido}`);
        }

        static saludar() {
          console.log("Hola que tal");
        }
      }

      /* Llamamos al método estático con la siguiente sintaxis
      El nombre de la clase, un punto y la función estática */
      Nombre.saludar();
    </script>
  </body>
</html>

Métodos getters y setters

Los getters y setters son métodos especiales que permiten establecer y obtener los valores de los atributos de nuestra clase.

Ejm

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Getters y Setters en Javascript</title>
  </head>

  <body>
    <h1>Getters y Setters en Javascript</h1>

    <script>
      class Animal {
        constructor(nombre, edad) {
          this.nombre = nombre;
          this.edad = edad;
          this.raza = null;
        }

        mostrar() {
          console.log(`Nombre: ${this.nombre} - Edad: ${this.edad}`);
        }

        get getRaza() {
          return this.raza;
        }

        set setRaza(raza) {
          this.raza = raza;
        }
      }

      const perro = new Animal("Perro", 51);
      perro.setRaza = "Doberman";
      console.log(perro.getRaza);
    </script>
  </body>
</html>

Aunque getRaza() es un método obtenedor, Javascript, cuando llamamos al método lo tenemos que tratar como si fuera una propiedad. Lo mismo ocurre con setRaza(), lo trata como una propiedad. El método estático, al poderse utilizar sin necesidad de instanciar, no lo encontraremos dentro del prototipo. Es una característica de los métodos estáticos en Javascript.

Scroll al inicio