Sobes.tech
Junior

Ce este this în JavaScript?

sobes.tech AI

Răspuns de la AI

this în JavaScript este un cuvânt cheie care indică contextul de execuție al unei funcții. Valoarea sa este determinată în funcție de modul în care este apelată funcția.

De obicei, this indică obiectul global (în browser, window) în cazul unui apel obișnuit de funcție, cu excepția cazului în modul strict.

În modul strict ('use strict'), în același scenariu, this va fi undefined.

Când se apelează o metodă a unui obiect, this face referire la obiectul în sine.

const obj = {
  method: function() {
    console.log(this); // obj
  }
};
obj.method();

Când se folosește un constructor (new cu o funcție), this indică către noul exemplar creat.

function Constructor() {
  console.log(this); // instanța Constructor
}
const instance = new Constructor();

Când se utilizează metode precum call, apply, bind, this este setat explicit ca primul argument.

function greet() {
  console.log(`Salut, ${this.name}!`);
}

const person = { name: 'Alicia' };

greet.call(person); // Salut, Alicia!
greet.apply(person); // Salut, Alicia!

const boundGreet = greet.bind(person);
boundGreet(); // Salut, Alicia!

În funcțiile săgeată (Arrow Functions), this nu are propriul său context. Este lexic moștenit din domeniul în care a fost definit.

const obj2 = {
  name: 'Bob',
  greet: function() {
    const arrowGreet = () => {
      console.log(`Salut de la ${this.name}!`); // this face referire la obj2
    };
    arrowGreet();
  }
};
obj2.greet(); // Salut de la Bob!

const obj3 = {
  name: 'Charlie',
  greet: () => {
    console.log(`Salut de la ${this.name}!`); // this face referire la window (sau undefined în strict mode), nu la obj3
  }
};
obj3.greet(); // Salut de la undefined! (sau eroare)

Contextul this poate fi neclar, mai ales la transmiterea callback-urilor sau în operațiuni asincrone. Înțelegerea regulilor this este esențială pentru funcționarea corectă a JavaScript-ului.