Sobes.tech
Middle

Proč se v jazyce JavaScript nesmí používat klíčové slovo 'this'?

sobes.tech AI

Odpověď od AI

this nelze v šipkových funkcích použít k přiřazení k vlastnímu kontextu. Šipkové funkce nevytvářejí svůj vlastní this, ale dědí jeho hodnotu z okolí, ve kterém byly definovány.

Také this je nespolehlivé v zpětných voláních asynchronních operací nebo obslužnících událostí bez explicitního navázání kontextu (.bind(), .call(), .apply()), protože jeho hodnota se může změnit nebo stát globálním objektem (v ne-striktním režimu) nebo undefined (v striktním režimu).

Příklad:

function tradičníFunkce() {
  console.log(this); // this závisí na volání
}

const šipkováFunkce = () => {
  console.log(this); // this dědí z vnějšího prostředí
};

const objekt = {
  metoda: tradičníFunkce
};

objekt.metoda(); // this - objekt
tradičníFunkce(); // this - globální objekt (window / global)

const objekt2 = {
  metoda: šipkováFunkce
};

objekt2.metoda(); // this - děděno. Pokud je definováno v globálním prostředí, pak global/window.