Məzmuna keçin
  • Kateqoriyalar
  • Ən yeni
  • Teqlər
  • Populyar
Yığmaq
Brend loqosu
  1. Əsas səhifə
  2. Front-end
  3. JavaScript
  4. JavaScript-də bind, call və apply metodları

JavaScript-də bind, call və apply metodları

Planlaşdırılıb Sabitlənib Kilidlənib Köçürülüb JavaScript
bindcallapplythis
1 Yazı 1 Yazarlar 34 Baxış
  • Ən köhnədən yeniyə
  • Ən yenidən köhnəyə
  • Ən çox səs
Cavab ver
  • Mövzu olaraq cavablandır
🔑 Daxil ol
Bu mövzu silindi. Yalnız mövzu idarəçiliyi imtiyazlarına malik olan istifadəçilər onu görə bilər.
  • codexC Oflayn
    codexC Oflayn
    codex
    üzərində yazmışdı sonuncu dəfə tərəfindən redaktə edilib
    #1

    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ın this 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() Metodu

    Tə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ıq digerUser obyektinə aiddir.

    2. apply() Metodu

    Tə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() Metodu

    Təyinat:

    bind() funksiyası call() və apply() kimi this 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 edir Də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ında this 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.

    1 cavab Son cavab
    Cavab ver
    • Mövzu olaraq cavablandır
    🔑 Daxil ol
    • Ən köhnədən yeniyə
    • Ən yenidən köhnəyə
    • Ən çox səs




    Bilik paylaşdıqca artan bir sərvətdir
    • Daxil ol

    • Sizin hesabınız yoxdur? Qeydiyyatdan keç

    • Axtarış etmək üçün daxil olun və ya qeydiyyatdan keçin.
    • İlk yazı
      Son yazı
    0
    • Kateqoriyalar
    • Ən yeni
    • Teqlər
    • Populyar