Sobes.tech
Middle

Pasakok apie tai skirtinguose kontekstuose: objektų metodose, rodyklės funkcijose ir įprastose funkcijose.

sobes.tech AI

Atsakymas iš AI

JavaScript'e this reikšmė priklauso nuo funkcijos kvietimo konteksto:

  • Objekto metoduose this nurodo į objektą, kuriam priklauso metodas:
const obj = {
  name: 'Alice',
  greet() {
    console.log(this.name);
  }
};
obj.greet(); // Alice
  • Įprastoje funkcijoje (ne kaip metodas) this priklauso nuo režimo ir kvietimo būdo:
    • Griežtame režime ('use strict') — this bus undefined.
    • Neregišame režime — globaliam objektui (window naršyklėje).
function foo() {
  console.log(this);
}
foo(); // window arba `undefined` griežtame režime
  • Rodyklės funkcijose this leksiškai paveldima iš išorinio konteksto, t.y., iš srities, kurioje funkcija buvo deklaruota, o ne iš vietos, kurioje ji kviečiama:
const obj = {
  name: 'Bob',
  arrowFunc: () => {
    console.log(this.name);
  },
  regularFunc() {
    const arrow = () => {
      console.log(this.name);
    };
    arrow();
  }
};
obj.arrowFunc(); // undefined arba išorinio konteksto vardas
obj.regularFunc(); // Bob

Todėl rodyklės funkcijos yra naudingos išlaikyti this kontekstą iš išorinės funkcijos, o įprastos funkcijos ir metodai turi savo this reikšmę priklausomai nuo kvietimo būdo.