Funkcje call oraz apply w JavaScript

JavaScript udostępnia trzy ciekawe funkcje dzięki którym możemy wywołać funkcję w kontekście danego obiektu. Są nimi: call, apply oraz bind.

Funkcja call
Pozwala na wywołanie funkcji z podanym this oraz argumentami, this określa obiekt jako kontekst, gdzie jest użyty kod. Przykład:

 let obj = {
     name: "Ola",
     print: function(surname) {     
        // this wskazuje na obiekt obj z którego
        // pobrana jest wartość name 
        console.log( this.name, surname ); 
     }
 };
 obj.print(); // Ola

// call pozwala na zmianę kontekstu w jakim wywoływana jest funkcja
let user = { name: "Rafał" };
obj.print.call(user, "Kot" ); // Rafał Kot

Funkcja apply
Działa tak samo jak call tylko przyjmuje tablicę argumentów do funkcji. Przykład:

 let obj = {
     name: "Ola",
     // this wskazuje na obiekt obj z którego
     // pobrana jest wartość name 
     print: function(surname, city) { 
        console.log( this.name, surname, city ); 
     }
 };
 obj.print("Kot", "Wawa"); // Ola Kot Wawa

 // call pozwala na zmianę kontekstu w jakim wywoływana jest funkcja
let user = { name: "Rafał" };
obj.print.call(user, "Kot", "Kraków" ); // Rafał Kot Kraków
obj.print.apply(user, ["Kot", "Kraków"] ); // Rafał Kot Kraków

Obie funkcje to ważny element w naszym arsenale w JS, nie tylko na rozmowę rekrutacyjną 😉

KW

Scroll to Top