CodeGym /Cursos /Frontend SELF ES /Métodos estáticos

Métodos estáticos

Frontend SELF ES
Nivel 40 , Lección 1
Disponible

8.1 Declaración de métodos estáticos

Los métodos estáticos en JavaScript son métodos que se definen en la clase en sí, y no en sus instancias. Se llaman directamente en la clase, y no en los objetos creados por esa clase. Los métodos estáticos se utilizan a menudo para crear funciones auxiliares que están relacionadas con la clase, pero no con objetos concretos.

Métodos estáticos se declaran utilizando la palabra clave static antes de la definición del método en el cuerpo de la clase.

Ejemplo:

  • Los métodos add y multiply están declarados como estáticos utilizando la palabra clave static
  • Estos métodos se llaman directamente en la clase MathHelper, y no en sus instancias
JavaScript
    
      class MathHelper {
        static add(a, b) {
          return a + b;
        }

        static multiply(a, b) {
          return a * b;
        }
      }

      console.log(MathHelper.add(5, 3)); // 8
      console.log(MathHelper.multiply(5, 3)); // 15
    
  

8.2 Uso de métodos estáticos

Los métodos estáticos son útiles en los siguientes escenarios:

  1. Funciones auxiliares: los métodos estáticos pueden utilizarse para crear funciones utilitarias que realizan operaciones relacionadas con la clase.
  2. Métodos de fábrica: los métodos estáticos pueden utilizarse para crear instancias de la clase con una lógica específica.
  3. Procesamiento de datos: los métodos estáticos pueden utilizarse para procesar datos relacionados con la clase, pero que no requieren la creación de instancias de la clase.

Ejemplo de funciones auxiliares:

  • La clase StringUtil contiene métodos estáticos capitalize y reverse, que trabajan con cadenas
  • Estos métodos se llaman directamente en la clase StringUtil
JavaScript
    
      class StringUtil {
        static capitalize(str) {
          return str.charAt(0).toUpperCase() + str.slice(1);
        }

        static reverse(str) {
          return str.split('').reverse().join('');
        }
      }

      console.log(StringUtil.capitalize('hello')); // "Hello"
      console.log(StringUtil.reverse('hello')); // "olleh"
    
  

Ejemplo de método de fábrica:

El método estático fromObject crea una instancia de la clase Car a partir de un objeto de datos.

JavaScript
    
      class Car {
        constructor(brand, model) {
          this.brand = brand;
          this.model = model;
        }

        static fromObject(obj) {
          return new Car(obj.brand, obj.model);
        }
      }

      const carData = { brand: 'Toyota', model: 'Camry' };
      const car = Car.fromObject(carData);

      console.log(car.brand); // "Toyota"
      console.log(car.model); // "Camry"
    
  

8.3 Métodos estáticos y herencia

En JavaScript, los métodos estáticos también se heredan por clases derivadas. Las clases derivadas pueden utilizar los métodos estáticos de la clase base o sobrescribirlos.

Ejemplo de herencia de métodos estáticos:

  • El método estático identify está definido en la clase Animal y sobrescrito en la clase Dog
  • Se llama al método identify en ambas clases
JavaScript
    
      class Animal {
        static identify() {
          return 'This is an animal';
        }
      }

      class Dog extends Animal {
        static identify() {
          return 'This is a dog';
        }
      }

      console.log(Animal.identify()); // "This is an animal"
      console.log(Dog.identify()); // "This is a dog"
    
  

8.4 Acceso a métodos estáticos dentro de otros métodos

Los métodos estáticos pueden ser llamados dentro de otros métodos de la clase usando el nombre de la clase.

Ejemplo:

El método estático calculateArea se llama dentro de otro método estático describeCircle utilizando la palabra clave this, que en este contexto se refiere a la clase Geometry en sí.

JavaScript
    
      class Geometry {
        static calculateArea(radius) {
          return Math.PI * radius * radius;
        }

        static describeCircle(radius) {
          const area = this.calculateArea(radius);
          return `A circle with radius ${radius} has an area of ${area.toFixed(2)}.`;
        }
      }

      console.log(Geometry.describeCircle(5)); // "A circle with radius 5 has an area of 78.54."
    
  

8.5 Métodos estáticos e instancias de clase

Los métodos estáticos no pueden ser llamados en instancias de la clase. Intentar llamar a un método estático en una instancia resultará en un error.

Ejemplo:

El método estático add se llama en la clase Calculator, y no en su instancia calc.

JavaScript
    
      class Calculator {
        static add(a, b) {
          return a + b;
        }
      }

      const calc = new Calculator();
      console.log(Calculator.add(3, 4)); // 7

      console.log(calc.add(3, 4)); // Error: calc.add no es una función
    
  
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION