Sobes.tech
Middle

Prečo by ste nemali používať kľúčové slovo 'this' v JavaScript?

sobes.tech AI

Odpoveď od AI

this nemôže byť použitý v šípových funkciách na viazanie k vlastnému kontextu. Šípové funkcie nevytvárajú vlastný this, ale dedí jeho hodnotu z oblasti, v ktorej boli definované.

Tiež je this nedôveryhodný v spätných volaniach asynchrónnych operácií alebo obslužníkoch udalostí bez explicitného viazania kontextu (.bind(), .call(), .apply()), pretože jeho hodnota sa môže zmeniť alebo stať globálnym objektom (v režime bez prísnych pravidiel) alebo undefined (v režime prísnych pravidiel).

Príklad:

function tradičnáFunkcia() {
  console.log(this); // this závisí od volania
}

const šípkováFunkcia = () => {
  console.log(this); // this dedí z vonkajšieho prostredia
};

const objekt = {
  metóda: tradičnáFunkcia
};

objekt.metóda(); // this - objekt
tradičnáFunkcia(); // this - globálny objekt (window / global)

const objekt2 = {
  metóda: šípkováFunkcia
};

objekt2.metóda(); // this - zdedené. Ak je definované v globálnej oblasti, potom global/window.