Sobes.tech
Middle

Vorbește despre acest lucru în diferite contexte: în metodele obiectelor, în funcțiile săgeată și în funcțiile normale.

sobes.tech AI

Răspuns de la AI

În JavaScript, valoarea lui this depinde de contextul de apelare al funcției:

  • În metodele obiectului this face referire la obiectul căruia îi aparține metoda:
const obj = {
  name: 'Alice',
  greet() {
    console.log(this.name);
  }
};
obj.greet(); // Alice
  • Într-o funcție obișnuită (care nu este metodă) this depinde de modul și de modul în care este apelată:
    • În modul strict ('use strict') — this va fi undefined.
    • În modul non-strict — va fi obiectul global (window în browsere).
function foo() {
  console.log(this);
}
foo(); // window sau undefined în strict mode
  • În funcțiile săgeată this este moștenit lexical din contextul exterior, adică preluat din domeniul în care a fost declarată funcția, nu din cel în care este apelată:
const obj = {
  name: 'Bob',
  arrowFunc: () => {
    console.log(this.name);
  },
  regularFunc() {
    const arrow = () => {
      console.log(this.name);
    };
    arrow();
  }
};
obj.arrowFunc(); // undefined sau numele din contextul exterior
obj.regularFunc(); // Bob

Prin urmare, funcțiile săgeată sunt utile pentru păstrarea contextului this din funcția externă, în timp ce funcțiile normale și metodele au valoarea lor proprie de this, în funcție de modul în care sunt apelate.