Sobes.tech
Middle

Mis on call, apply ja bind meetodid JavaScriptis?

sobes.tech AI

Vastus AI-lt

call, apply ja bind — need on JavaScripti meetodid, mis võimaldavad hallata funktsiooni täitmise konteksti (väärtus this).

  • call: Kutsub funktsiooni välja määratud this väärtuse ja eraldi edastatud argumentidega.
    // Näide call kasutamisest
    function greet() {
      return "Tere, " + this.name + "!";
    }
    
    const person = { name: "Ivan" };
    
    console.log(greet.call(person)); // Väljund: Tere, Ivan!
    
  • apply: Kutsub funktsiooni välja määratud this väärtuse ja argumentidega, mis edastatakse massiivi või pseudo-massiivina.
    // Näide apply kasutamisest
    function sum(a, b) {
      return this.base + a + b;
    }
    
    const context = { base: 10 };
    const numbers = [5, 3];
    
    console.log(sum.apply(context, numbers)); // Väljund: 18
    
  • bind: Loob uue funktsiooni, millel on määratud this väärtus, ja mis ei kutsuta kohe välja.
    // Näide bind kasutamisest
    const module = {
      x: 42,
      getX: function() {
        return this.x;
      }
    };
    
    const unboundGetX = module.getX;
    console.log(unboundGetX()); // Väljund: undefined (this osutab globaalsele objektile)
    
    const boundGetX = unboundGetX.bind(module);
    console.log(boundGetX()); // Väljund: 42 (this on seotud module'iga)
    

Peamised erinevused:

Meetod Argumentide edastamine Funktsiooni väljakutse Tagastatav väärtus
call Eraldi (koma abil) Kohe Funktsiooni täitmise tulemus
apply Massiivina või pseudo-massiivina Kohe Funktsiooni täitmise tulemus
bind Eraldi (koma abil) Mitte kohe, vaid hiljem Uus funktsioon, millele on seotud this