Listado completo de tutoriales

ES6 - Definición de métodos estáticos


Con esta nueva actualización de JavaScript tenemos la posibilidad de definir métodos estáticos en una clase.

Un método estático pertenece a la clase y no a una instancia u objeto de una clase. Para llamar luego a un método estático lo hacemos directamente antecediendo el nombre de la clase.

Se las utiliza para definir funcionalidades que pertenecen a una clase pero que no dependan de instancias de dicha clase.

Los métodos estáticos no pueden acceder a los atributos de la clase mediante this.

Problema

Plantear una clase llamada 'Matematica' que defina una serie de métodos estáticos que nos retorne el primero el mayor de dos enteros y el segundo el menor. Además agregar un tercer método estático que retorne un valor aleatorio entre dos valores enteros que le enviamos como parámetros.

<!DOCTYPE html>
<html>
<head>
  <title>Ejemplo de JavaScript</title>
  <meta charset="UTF-8">
</head>
<body>

<script>

  class Matematica {
    static mayor(v1,v2) {
      if (v1>v2)
        return v1;
      else
        return v2;
    }

    static menor(v1,v2) {
      if (v1<v2)
        return v1;
      else
        return v2;
    }

    static aleatorio(inicio, fin) {
      return Math.trunc((Math.random()*(fin+1-inicio))+inicio);
    }
  }
  
  let x1=Matematica.aleatorio(1,10);
  let x2=Matematica.aleatorio(1,10);
  document.write(`El mayor entre ${x1} y ${x2} es ${Matematica.mayor(x1,x2)} <br>`);
  document.write(`El menor entre ${x1} y ${x2} es ${Matematica.menor(x1,x2)}`);

</script>

</body>
</html>

Utilizamos la palabra clave 'static' para definir éste tipo de métodos:

    static mayor(v1,v2) {
      if (v1>v2)
        return v1;
      else
        return v2;
    }

Un método estático normalmente implementa un algoritmo para procesar los datos que llegan como parámetro.

Para la llamada a un método estático lo hacemos antecediendo el nombre de la clase y no un objeto de la clase:

  let x1=Matematica.aleatorio(1,10);

Retornar