Middle
Miért nem szabad a 'this' kulcsszót használni JavaScript-ben?
sobes.tech MI
Válasz az MI-től
Ez a this nem használható nyílfüggvényekben a saját kontextushoz való kötéshez. A nyílfüggvények nem hoznak létre saját this-et, hanem öröklik annak értékét a definíciójuk helyének hatóköréből.
Emellett a this megbízhatatlan az aszinkron műveletek visszahívásaiban vagy eseménykezelőkben explicit kontextus kötés nélkül (.bind(), .call(), .apply()), mivel az értéke megváltozhat vagy globális objektummá (nem szigorú módban) vagy undefined-dé válhat (szigorú módban).
Példa:
function hagyományosFüggvény() {
console.log(this); // ez a hívástól függ
}
const nyílFüggvény = () => {
console.log(this); // ez a külső hatókörből öröklődik
};
const obj = {
módszer: hagyományosFüggvény
};
obj.módszer(); // this - obj
hagyományosFüggvény(); // this - globális objektum (window / global)
const obj2 = {
módszer: nyílFüggvény
};
obj2.módszer(); // this - öröklött. Ha globális környezetben van definiálva, akkor global/window.