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
thisnaar 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
thisaf van de modus en de manier van aanroepen:- In strikte modus (
'use strict') —thiswordtundefined. - In niet-strikte modus — wordt het globale object (
windowin browsers).
- In strikte modus (
function foo() {
console.log(this);
}
foo(); // window of undefined in strict mode
- In pijl functies wordt
thislexicaal 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.