Sobes.tech
Middle

Co jsou metody call, apply a bind v JavaScriptu?

sobes.tech AI

Odpověď od AI

call, apply a bind jsou metody dostupné pro všechny funkce v JavaScriptu. Používají se k řízení kontextu vykonávání funkce (hodnoty this).

  • call: Zavolá funkci s danou hodnotou this a samostatnými argumenty.
    // Příklad použití call
    function greet() {
      return "Ahoj, " + this.name + "!";
    }
    
    const person = { name: "Ivan" };
    
    console.log(greet.call(person)); // Výstup: Ahoj, Ivan!
    
  • apply: Zavolá funkci s danou hodnotou this a argumenty předané ve formě pole nebo pseudo-pole.
    // Příklad použití apply
    function sum(a, b) {
      return this.base + a + b;
    }
    
    const context = { base: 10 };
    const numbers = [5, 3];
    
    console.log(sum.apply(context, numbers)); // Výstup: 18
    
  • bind: Vytvoří novou funkci, která při volání má pevně stanovenou hodnotu this. Původní funkce se nevolá ihned.
    // Příklad použití bind
    const module = {
      x: 42,
      getX: function() {
        return this.x;
      }
    };
    
    const unboundGetX = module.getX;
    console.log(unboundGetX()); // Výstup: undefined (this odkazuje na globální objekt)
    
    const boundGetX = unboundGetX.bind(module);
    console.log(boundGetX()); // Výstup: 42 (this je vázáno na module)
    

Hlavní rozdíly:

Metoda Předání argumentů Volání funkce Návratová hodnota
call Odděleně (čárkou) Ihned Výsledek volání funkce
apply Ve formě pole nebo pseudo-pole Ihned Výsledek volání funkce
bind Odděleně (čárkou) Ne ihned Nová funkce s navázaným this