CodeGym /Kursy /Frontend SELF PL /Metody statyczne

Metody statyczne

Frontend SELF PL
Poziom 40 , Lekcja 1
Dostępny

8.1 Deklaracja metod statycznych

Metody statyczne w JavaScript to metody, które są definiowane na samej klasie, a nie na jej instancjach. Są wywoływane bezpośrednio na klasie, a nie na obiektach utworzonych przez tę klasę. Metody statyczne często są używane do tworzenia funkcji pomocniczych, które mają związek z klasą, ale nie z konkretnymi obiektami.

Metody statyczne są deklarowane za pomocą słowa kluczowego static przed definicją metody w ciele klasy.

Przykład:

  • Metody add i multiply są zadeklarowane jako statyczne z użyciem słowa kluczowego static
  • Te metody są wywoływane bezpośrednio na klasie MathHelper, a nie na jej instancjach
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 Użycie metod statycznych

Metody statyczne są przydatne w następujących scenariuszach:

  1. Funkcje pomocnicze: metody statyczne mogą być użyte do tworzenia funkcji użytkowych, które wykonują operacje związane z klasą.
  2. Metody fabryczne: metody statyczne mogą być używane do tworzenia instancji klasy z określoną logiką.
  3. Przetwarzanie danych: metody statyczne mogą być używane do przetwarzania danych związanych z klasą, ale nie wymagających tworzenia instancji klasy.

Przykład funkcji pomocniczych:

  • Klasa StringUtil zawiera metody statyczne capitalize i reverse, które działają na łańcuchach
  • Te metody są wywoływane bezpośrednio na klasie 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"
    
  

Przykład metody fabrycznej:

Metoda statyczna fromObject tworzy instancję klasy Car z obiektu danych.

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 Metody statyczne i dziedziczenie

W JavaScript metody statyczne są również dziedziczone przez klasy pochodne. Klasy pochodne mogą używać metod statycznych klasy bazowej lub je przedefiniować.

Przykład dziedziczenia metod statycznych:

  • Metoda statyczna identify jest zdefiniowana w klasie Animal i przedefiniowana w klasie Dog
  • Metoda identify jest wywoływana na obu klasach
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 Dostęp do metod statycznych wewnątrz innych metod

Metody statyczne mogą być wywoływane wewnątrz innych metod klasy z użyciem nazwy klasy.

Przykład:

Metoda statyczna calculateArea jest wywoływana wewnątrz innej metody statycznej describeCircle z użyciem słowa kluczowego this, które w tym kontekście odnosi się do samej klasy Geometry.

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 Metody statyczne i instancje klasy

Metody statyczne nie mogą być wywoływane na instancjach klasy. Próba wywołania metody statycznej na instancji spowoduje błąd.

Przykład:

Metoda statyczna add jest wywoływana na klasie Calculator, a nie na jej instancji 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)); // Błąd: calc.add nie jest funkcją
    
  
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION