Sobes.tech
Middle

Vertel over dit in verschillende contexten: in objectmethoden, in pijlfuncties en in gewone functies.

sobes.tech AI

Antwoord van AI

In JavaScript hangt de waarde van this af van de context waarin de functie wordt aangeroepen:

  • In objectmethoden verwijst this naar het object waaraan de methode toebehoort:
const obj = {
  name: 'Alice',
  greet() {
    console.log(this.name);
  }
};
obj.greet(); // Alice
  • In een gewone functie (geen methode) hangt this af van de modus en de manier van aanroepen:
    • In strikte modus ('use strict') — this wordt undefined.
    • In niet-strikte modus — wordt het globale object (window in browsers).
function foo() {
  console.log(this);
}
foo(); // window of undefined in strict mode
  • In pijl functies wordt this lexicaal geërfd uit de externe context, dat wil zeggen, uit het scope waarin de functie is gedeclareerd, niet waar hij wordt aangeroepen:
const obj = {
  name: 'Bob',
  arrowFunc: () => {
    console.log(this.name);
  },
  regularFunc() {
    const arrow = () => {
      console.log(this.name);
    };
    arrow();
  }
};
obj.arrowFunc(); // undefined of naam uit externe context
obj.regularFunc(); // Bob

Daarom zijn pijl functies handig om de this-context van de externe functie te behouden, terwijl normale functies en methoden hun eigen this-waarde hebben afhankelijk van hoe ze worden aangeroepen.