„This” în JavaScript: Ce înseamnă și cum să îl folosiți
JavaScript este un limbaj de programare orientat pe obiecte, iar „this” este un cuvânt cheie care se referă la obiectul curent în contextul în care este folosit. Înțelegerea conceptului de „this” poate fi confuză la început, dar odată înțeles, poate fi un instrument puternic pentru a scrie cod mai curat și mai ușor de întreținut.
În acest tutorial, vom explora ce înseamnă „this” în JavaScript și cum să îl folosiți în diferite situații.
Modul de funcționare al „this”
În JavaScript, „this” se referă la obiectul care este proprietarul contextului curent în care este folosit. Acest lucru poate fi determinat de contextul în care se află codul.
De exemplu, în cadrul unei funcții, „this” se va referi la obiectul global, adică „window” în browser sau „global” în Node.js. În cazul în care funcția face parte dintr-un obiect, „this” se va referi la obiectul proprietar.
Acest lucru poate fi ilustrat prin următorul cod:

În primul caz, atunci când apelăm obj.logName()
, „this” se referă la obj
, astfel încât this.name
se va evalua la „My Object”.
În al doilea caz, atunci când apelăm logName()
, „this” se referă la obiectul global, astfel încât this.name
nu va fi definit și va returna undefined
.
Așadar, contextul în care se află „this” poate avea un impact semnificativ asupra valorii acestuia.
Folosirea „this” cu „call”, „apply” și „bind”
„Call”, „apply” și „bind” sunt metode disponibile pentru orice funcție în JavaScript și vă permit să controlați contextul „this”.
Call
ia un obiect ca primul argument și apoi apelă funcția cu acest obiect ca context „this”. De exemplu:

Apply
funcționează la fel ca call
, cu excepția faptului că în loc să treacă argumentele ca argumente separate, le trece ca un array. De exemplu:

Bind
creează o nouă funcție cu contextul „this” legat la un anumit obiect. De exemplu:

Acestea sunt doar câteva exemple de cum puteți utiliza „call”, „apply” și „bind” pentru a controla contextul „this” în JavaScript. Utilizând aceste metode, puteți scrie cod mai flexibil și mai ușor de întreținut.