CodeGym /Các khóa học /Frontend SELF VI /Phương thức tĩnh

Phương thức tĩnh

Frontend SELF VI
Mức độ , Bài học
Có sẵn

8.1 Khai báo phương thức tĩnh

Phương thức tĩnh trong JavaScript là các phương thức được định nghĩa trên lớp, chứ không phải trên các thể hiện của nó. Chúng được gọi trực tiếp trên lớp, không phải trên các đối tượng được tạo từ lớp này. Phương thức tĩnh thường được sử dụng để tạo các hàm hỗ trợ có liên quan đến lớp, nhưng không liên quan đến các đối tượng cụ thể.

Phương thức tĩnh được khai báo bằng cách sử dụng từ khóa static trước định nghĩa phương thức trong thân lớp.

Ví dụ:

  • Các phương thức addmultiply được khai báo là tĩnh bằng cách sử dụng từ khóa static
  • Những phương thức này được gọi trực tiếp trên lớp MathHelper, chứ không phải trên các thể hiện của nó
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 Sử dụng phương thức tĩnh

Phương thức tĩnh hữu ích trong các trường hợp kịch bản sau:

  1. Hàm hỗ trợ: phương thức tĩnh có thể được sử dụng để tạo các hàm tiện ích thực hiện các thao tác liên quan đến lớp.
  2. Phương thức tạo: phương thức tĩnh có thể được sử dụng để tạo các thể hiện của lớp với một logic nhất định.
  3. Xử lý dữ liệu: phương thức tĩnh có thể được sử dụng để xử lý dữ liệu liên quan đến lớp, nhưng không yêu cầu tạo các thể hiện của lớp.

Ví dụ về hàm hỗ trợ:

  • Lớp StringUtil chứa các phương thức tĩnh capitalizereverse, hoạt động với chuỗi
  • Những phương thức này được gọi trực tiếp trên lớp 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"
    
  

Ví dụ về phương thức tạo:

Phương thức tĩnh fromObject tạo một thể hiện của lớp Car từ một đối tượng dữ liệu.

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 Phương thức tĩnh và kế thừa

Trong JavaScript, các phương thức tĩnh cũng được kế thừa bởi các lớp dẫn xuất. Các lớp dẫn xuất có thể sử dụng các phương thức tĩnh của lớp cơ sở hoặc ghi đè chúng.

Ví dụ về kế thừa phương thức tĩnh:

  • Phương thức tĩnh identify được định nghĩa trong lớp Animal và được ghi đè trong lớp Dog
  • Phương thức identify được gọi trên cả hai lớp
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 Truy cập phương thức tĩnh bên trong các phương thức khác

Phương thức tĩnh có thể được gọi bên trong các phương thức khác của lớp bằng cách sử dụng tên lớp.

Ví dụ:

Phương thức tĩnh calculateArea được gọi bên trong một phương thức tĩnh khác describeCircle bằng cách sử dụng từ khóa this, trong ngữ cảnh này, tham chiếu đến lớp 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 Phương thức tĩnh và các thể hiện của lớp

Phương thức tĩnh không thể được gọi trên các thể hiện của lớp. Cố gắng gọi phương thức tĩnh trên một thể hiện sẽ dẫn đến lỗi.

Ví dụ:

Phương thức tĩnh add được gọi trên lớp Calculator, chứ không phải trên thể hiện của nó 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)); // Lỗi: calc.add không phải là một hàm
    
  
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION