Sobes.tech
Middle

Реци о овоме у различитим контекстима: у методама објекта, у стрелачким функцијама и у обичним функцијама.

sobes.tech АИ

Одговор од АИ

U JavaScript-u, vrednost this zavisi od konteksta poziva funkcije:

  • U metodama objekta this se odnosi na objekat kojem pripada metoda:
const obj = {
  name: 'Alice',
  greet() {
    console.log(this.name);
  }
};
obj.greet(); // Alice
  • U običnoj funkciji (koja nije metoda) this zavisi od režima i načina poziva:
    • U režimu stroge kontrole ('use strict') — this će biti undefined.
    • U nestriktivnom režimu — biće globalni objekat (window u pretraživaču).
function foo() {
  console.log(this);
}
foo(); // window ili undefined u režimu stroge kontrole
  • U streličastim funkcijama this se leksikalno nasleđuje iz spoljnog konteksta, tj. iz oblasti gde je funkcija deklarisana, a ne iz mesta gde je pozvana:
const obj = {
  name: 'Bob',
  arrowFunc: () => {
    console.log(this.name);
  },
  regularFunc() {
    const arrow = () => {
      console.log(this.name);
    };
    arrow();
  }
};
obj.arrowFunc(); // undefined ili ime iz spoljnog konteksta
obj.regularFunc(); // Bob

Zbog toga su streličaste funkcije korisne za očuvanje this konteksta iz spoljne funkcije, dok obične funkcije i metode imaju sopstvenu vrednost this u zavisnosti od načina poziva.