CodeGym /Kurslar /Frontend SELF AZ /Konstruktorlar və metodlar

Konstruktorlar və metodlar

Frontend SELF AZ
Səviyyə , Dərs
Mövcuddur

6.1 Siniflərin konstruktorları

Konstruktorlar və sinif metodları JavaScript-də obyekt yönümlü proqramlaşdırmanın əsas elementləridir. Onlar obyektləri yaratmağa və ilkinləşdirməyə, eləcə də onların davranışını təyin etməyə imkan verir. Aşağıda biz konstruktorların və sinif metodlarının necə işlədiyini və onları necə istifadə edə biləcəyimizi nəzərdən keçirəcəyik.

Konstruktor nədir?

Konstruktor — bu sinfin xüsusi bir metodu, hansı ki sinfin yeni nümunəsi yaradıldığı zaman çağırılır. O, obyektin ilkinləşdirilməsi, onun xüsusiyyətlərinin dəyərlərini təyin etmək və digər başlanğıc işləri yerinə yetirmək üçün istifadə olunur.

Konstruktorun təyin edilməsi

Konstruktor constructor açar sözü istifadə edilərək təyin edilir. Konstruktor daxilində isə this açar sözü vasitəsilə obyektin xüsusiyyətlərinə və metodlarına müraciət etmək olar.

Sintaksis:

    
      class ClassName {
        constructor(parametrlər) {
          // Obyektin ilkinləşdirilməsi
        }
      }
    
  

Nümunə:

Person sinfində constructor metodu iki parametr qəbul edir: nameage.

Bu parametrlər yaradılan obyektin nameage xüsusiyyətlərini ilkinləşdirmək üçün istifadə edilir.

JavaScript
    
      class Person {
        constructor(name, age) {
          this.name = name;
          this.age = age;
        }
      }

      const person1 = new Person('Alice', 30);
      const person2 = new Person('Bob', 25);

      console.log(person1.name); // Çap edəcək: Alice
      console.log(person2.age);  // Çap edəcək: 25
    
  

Defolt konstruktor

Əgər konstruktor açıq şəkildə təyin edilməyibsə, JavaScript avtomatik olaraq boş bir konstruktor yaradır.

Nümunə:

JavaScript
    
      class Animal {}

      const animal = new Animal();
      console.log(animal); // Çap edəcək: Animal {} sinfinin məzmunu
    
  

4.2 Sinif metodları

Sinif metodları sinifin daxilində təyin olunur və həmin sinifdən yaradılan obyektlər üçün funksionallıq təmin edir. Metodlar avtomatik olaraq sinifin prototipinə əlavə olunur, bu da bütün sinif nümunələrinin onları miras almasını və istifadə etməsini təmin edir.

Syntax:

    
      class ClassName {
        constructor(parametrlər) { // Obyektin təşkili } 
        metod1() { // Metodun içi } 
        metod2() { // Metodun içi }
      }
    
  

Nümunə:

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

        drive(distance) {
          this.mileage += distance;
          console.log(`${this.brand} ${this.model} ${distance} mil sürdü. Ümumi məsafə: ${this.mileage}`);
        }

        getDetails() {
          return `${this.brand} ${this.model}, Məsafə: ${this.mileage}`;
        }
      }

      const myCar = new Car('Toyota', 'Camry');
      myCar.drive(50); // "Toyota Camry 50 mil sürdü. Ümumi məsafə: 50"

      console.log(myCar.getDetails()); // "Toyota Camry, Məsafə: 50"
    
  

İzah:

  • Car sinifində iki metod təyin olunub: drive()getDetails()
  • drive() metodu maşının gedilən məsafəsini artırır və keçilən məsafə haqqında məlumat çıxarır
  • getDetails() metodu avtomobil haqqında məlumatlardan ibarət sətir qaytarır

6.3 Özəl metodlar

Yeni ECMAScript spesifikasiyaları ilə özəl (privat) metodlar və xüsusiyyətlər yaratmaq imkanı ortaya çıxdı, hansı ki, onlar sinifin xaricində əlçatan deyillər. Bunun üçün adın bir hissəsi olaraq # simvolundan istifadə olunur.

Özəl metodlar və xüsusiyyətlərin nümunəsi:

JavaScript
    
      class BankAccount {
        #balance = 0;

        constructor(initialBalance) {
          this.#balance = initialBalance;
        }

        #validateAmount(amount) {
          if (amount <= 0) {
            throw new Error('Məbləğ müsbət olmalıdır.');
          }
        }

        deposit(amount) {
          this.#validateAmount(amount);
          this.#balance += amount;
          console.log(`Əmanət edildi: ${amount}. Yeni balans: ${this.#balance}`);
        }

        withdraw(amount) {
          this.#validateAmount(amount);
          if (amount > this.#balance) {
            throw new Error('Yetersiz vəsait.');
          }
          this.#balance -= amount;
          console.log(`Çıxarıldı: ${amount}. Yeni balans: ${this.#balance}`);
        }

        getBalance() {
          return this.#balance;
        }
      }

      const account = new BankAccount(100);
      account.deposit(50); // Çap edəcək: Əmanət edildi: 50. Yeni balans: 150
      account.withdraw(30); // Çap edəcək: Çıxarıldı: 30. Yeni balans: 120
      console.log(account.getBalance()); // Çap edəcək: 120

      // Özəl metoda və ya xüsusiyyətə giriş cəhdi səhv yaradacaq
      account.#balance; // SyntaxError
      account.#validateAmount(50); // SyntaxError
    
  
1
Опрос
Siniflərlə tanışlıq,  39 уровень,  5 лекция
недоступен
Siniflərlə tanışlıq
Siniflərlə tanışlıq
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION