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

Métodos estáticos

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
1
Tarea
Frontend SELF ES,  nivel 40lección 1
Bloqueada
Métodos estáticos
Métodos estáticos
1
Tarea
Frontend SELF ES,  nivel 40lección 1
Bloqueada
Método de fábrica User
Método de fábrica User
Comentarios
  • Populares
  • Nuevas
  • Antiguas
Debes iniciar sesión para dejar un comentario
Esta página aún no tiene comentarios