Sobes.tech
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.