8.1 Statik metodların elan edilməsi
JavaScript-də statik metodlar — bu, birbaşa sinifdə müəyyən olunan metodlardır, obyektlərin nümunələrində deyil. Onlar birbaşa sinifdə çağırılır, həmin sinif tərəfindən yaradılan obyektlərdə deyil. Statik metodlar tez-tez sinifə aid olan, amma konkret obyektlərə aid olmayan yardımçı funksiyalar yaratmaq üçün istifadə olunur.
Statik metodlar sinifin daxilində metodu müəyyən etməzdən əvvəl static
açar sözündən istifadə edilərək elan edilir.
Nümunə:
add
vəmultiply
metodlarıstatic
açar sözündən istifadə edərək statik kimi elan edilmişdir- Bu metodlar
MathHelper
sinifində birbaşa çağırılır, onun nümunələrində deyil
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 Statik metodlardan istifadə
Statik metodlar aşağıdakı hallarda faydalıdır:
- Köməkçi funksiyalar: statik metodlar, siniflə əlaqəli əməliyyatları yerinə yetirən utilitar funksiyalar yaratmaq üçün istifadə edilə bilər.
- Fabrik metodlar: statik metodlar müəyyən məntiq ilə sinif nümunələri yaratmaq üçün istifadə edilə bilər.
- Məlumatların işlənməsi: statik metodlar siniflə əlaqəli, lakin sinif nümunələrinin yaradılmasını tələb etməyən məlumatların işlənməsi üçün istifadə edilə bilər.
Köməkçi funksiyalara nümunə:
StringUtil
sinficapitalize
vəreverse
kimi statik metodlar daxildir, hansı ki, sətirlərlə işləyir- Bu metodlar birbaşa
StringUtil
sinfi üzərində çağırılır
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"
Fabrik metodu nümunəsi:
Statik metod fromObject
məlumat obyekti əsasında Car
sinfinin nümunəsini yaradır.
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 Statik metodlar və irsiyyət
JavaScript-də statik metodlar törəmə siniflər tərəfindən də irsən alınır. Törəmə siniflər baz sinifin statik metodlarından istifadə edə bilər və ya onları yenidən təyin edə bilər.
Statik metodların irsiyyətinə nümunə:
identify
statik metoduAnimal
sinfində təyin olunub vəDog
sinfində yenidən təyin olunub- Hər iki sinifdə
identify
metodu çağırılır
class Animal {
static identify() {
return 'Bu bir heyvandır';
}
}
class Dog extends Animal {
static identify() {
return 'Bu bir itdir';
}
}
console.log(Animal.identify()); // "Bu bir heyvandır"
console.log(Dog.identify()); // "Bu bir itdir"
8.4 Statik metodlara digər metodlardan giriş
Statik metodlara sinifin adından istifadə etməklə digər metodlar daxilində müraciət etmək mümkündür.
Nümunə:
Statik metod calculateArea
digər statik metod describeCircle
daxilində this
açar sözündən istifadə olunaraq çağrılır, hansı ki, bu kontekstdə Geometry
sinifinə istinad edir.
class Geometry {
static calculateArea(radius) {
return Math.PI * radius * radius;
}
static describeCircle(radius) {
const area = this.calculateArea(radius);
return `Radiusu ${radius} olan dairənin sahəsi ${area.toFixed(2)}-dir.`;
}
}
console.log(Geometry.describeCircle(5)); // "Radiusu 5 olan dairənin sahəsi 78.54-dir."
8.5 Statik metodlar və class instance-lar
Statik metodlar class instance-larında çağırıla bilməz. Statik metodu bir instance-da çağırmağa cəhd etmək səhv ilə nəticələnəcək.
Nümunə:
Statik add
metodu Calculator
class-ında çağırılır, onun instance-ı calc
üzərində deyil.
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)); // Səhv: calc.add bir funksiya deyil
GO TO FULL VERSION