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.