Sobes.tech
Middle

JavaScript'te bağlamı korumanın yolları hakkında bana anlat: bind, call, apply. Bunlar nasıl farklılık gösterir?

sobes.tech yapay zeka

AI'dan gelen yanıt

JavaScript'te fonksiyonlar birinci sınıf nesneler olup dinamik çağrı bağlamına (this) sahiptir. bind, call ve apply metodları bu bağlamı yönetmeye olanak tanır:

  • call — fonksiyonu hemen çağırır, bağlam ve argümanları ayrı ayrı geçirir.

    func.call(context, arg1, arg2);
    
  • apply — call'a benzer, ancak argümanlar dizi olarak geçirilir.

    func.apply(context, [arg1, arg2]);
    
  • bind — fonksiyonu hemen çağırmaz, bunun yerine bağlanmış bağlam ve isteğe bağlı olarak kısmi uygulanan argümanlarla yeni bir fonksiyon döner.

    const boundFunc = func.bind(context, arg1);
    boundFunc(arg2);
    

Farklar:

  • call ve apply fonksiyonu hemen çağırır;
  • bind daha sonra çağrılmak üzere yeni bir fonksiyon döner;
  • apply, argümanlar zaten bir dizideyse kullanışlıdır;
  • bind, geri çağırmalarda ve olay işleyicilerinde bağlamı korumak için faydalıdır.