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: name
və age
.
Bu parametrlər yaradılan obyektin name
və age
xüsusiyyətlərini ilkinləşdirmək üçün istifadə edilir.
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ə:
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ə:
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()
və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ırgetDetails()
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:
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
GO TO FULL VERSION