JavaScript-də bind, call və apply metodları
-
JavaScript-də funksiyalar obyektlər kimi qəbul olunur. Bu səbəbdən funksiyalara aid əlavə metodlardan istifadə etmək mümkündür. Bu metodlardan ən çox istifadə olunanları
bind()
,call()
vəapply()
funksiyalarıdır. Bu metodlar vasitəsilə funksiyanınthis
kontekstini istədiyimiz şəkildə dəyişə bilərik.Bu məqalədə hər üçünü sadə və aydın şəkildə izah edəcəyik.
1.
call()
MetoduTəyinat:
call()
funksiyası bir funksiyanı başqa bir obyektin konteksti (this
) ilə çağırmağa imkan verir.Sintaksis:
funksiya.call(thisArg, arg1, arg2, ...)
thisArg
– funksiyanın içindəthis
olaraq istifadə ediləcək obyekt.arg1, arg2...
– funksiyaya ötürüləcək arqumentlər.
Nümunə:
const user = { ad: 'Nilay', salamla: function(yas) { console.log(`Salam, mənim adım ${this.ad} və mən ${yas} yaşındayam.`); } }; const digerUser = { ad: 'Elvin' }; user.salamla.call(digerUser, 30); // Çıxış: Salam, mənim adım Elvin və mən 30 yaşındayam.
İzah:
user.salamla
funksiyasıdigerUser
obyektinin kontekstində çağırıldı.this.ad
artıqdigerUser
obyektinə aiddir.
2.
apply()
MetoduTəyinat:
apply()
funksiyasıcall()
metoduna bənzəyir, yalnız arqumentlər massiv (array) şəklində verilir.Sintaksis:
funksiya.apply(thisArg, [arg1, arg2, ...])
Nümunə:
function topla(a, b) { return a + b; } console.log(topla.apply(null, [5, 10])); // 15
İstifadə Fərqi:
call()
→ arqumentləri ayrı-ayrı ötürürük.apply()
→ arqumentləri massiv kimi ötürürük.
3.
bind()
MetoduTəyinat:
bind()
funksiyasıcall()
vəapply()
kimithis
kontekstini dəyişmək üçün istifadə olunur, lakin funksiyanı dərhal çağırmır. Əvəzində, yeni bir funksiyanı qaytarır.Sintaksis:
const yeniFunksiya = funksiya.bind(thisArg, arg1, arg2, ...)
Nümunə:
const user = { ad: 'Nilay' }; function salamla(yas) { console.log(`Salam, mənim adım ${this.ad} və mən ${yas} yaşındayam.`); } const salamlaNilay = salamla.bind(user, 25); salamlaNilay(); // Salam, mənim adım Nilay və mən 25 yaşındayam.
İstifadə Yeri:
- Callback funksiyalar (məsələn,
setTimeout
,event handlers
) - React komponentlərində
this
problemi
Ümumi Müqayisə Cədvəli
Metod this
təyin edirDərhal çağırılır Arqument ötürmə forması call
️
️
Ayrı-ayrı ( arg1, arg2
)apply
️
️
Massiv ( [arg1, arg2]
)bind
️
(sonradan)
Ayrı-ayrı ( arg1, arg2
)
Real Həyat Nümunəsi:
setTimeout
vəbind
const user = { ad: 'Nilay', salamla: function() { console.log(`Salam, mənim adım ${this.ad}`); } }; setTimeout(user.salamla, 1000); // undefined (çünki this itirilib) setTimeout(user.salamla.bind(user), 1000); // Salam, mənim adım Nilay
Nəticə
bind()
,call()
vəapply()
JavaScript funksiyalarındathis
kontekstini idarə etmək üçün əsas vasitələrdir. Onların fərqlərini və istifadələrini bilmək, daha təmiz və anlaşılan kod yazmağınıza kömək edəcək.call()
vəapply()
dərhal funksiyanı çağırır.bind()
isə yeni bir funksiya qaytarır və istənilən vaxt çağırmaq mümkündür.
Bu metodlar — funksiya davranışına nəzarət etmək və təkrar istifadəni artırmaq üçün proqramçının alətlər çantasındakı vacib alətlərdəndir.
Bilik paylaşdıqca artan bir sərvətdir