Sobes.tech
Junior — Middle

El tudná magyarázni, hogy mik a különbségek a call, apply és bind módszerek között JavaScriptben, és hogyan használják őket a függvényhívás kontextusának kezelésére?

sobes.tech MI

Válasz az MI-től

A JavaScript-ben a call, apply és bind módszerek arra szolgálnak, hogy a függvényhívás során a kontextust (this) kezeljük:

  • call(thisArg, arg1, arg2, ...) — azonnal meghívja a függvényt, beállítva a this értékét thisArg-ra, és az argumentumokat külön-külön adja át.

  • apply(thisArg, [argsArray]) — hasonló a call-hoz, de az argumentumokat tömbként adja át.

  • bind(thisArg, arg1, arg2, ...) — nem hívja meg azonnal a függvényt, hanem egy új függvényt ad vissza, amelyhez a this kötve van, és opcionálisan előre beállított argumentumokat tartalmaz.

Példa:

function greet(greeting, punctuation) {
  console.log(greeting + ', ' + this.name + punctuation);
}

const person = { name: 'Иван' };

greet.call(person, 'Привет', '!'); // Привет, Иван!

greet.apply(person, ['Здравствуйте', '...']); // Здравствуйте, Иван...

const greetIvan = greet.bind(person, 'Привет');
greetIvan('!!!'); // Привет, Иван!!!

Ezek a módszerek lehetővé teszik, hogy explicit módon meghatározzuk, hogy a this melyik objektumra mutat a függvényen belül.