Context van een ongebonden functie in JavaScript
Laten we eens kijken wat er gebeurt als je in een functie
this gebruikt, maar deze niet bindt aan enig
element, zoals hier:
function func() {
console.log(this);
}
func();
In dit geval hangt het resultaat af van of
strikte modus
ingeschakeld is of niet. Als de modus niet strikt is,
zal this een verwijzing bevatten naar
window:
function func() {
console.log(this); // verwijzing naar window
}
func();
En als de modus strikt is, zal this
undefined bevatten:
"use strict";
function func() {
console.log(this); // undefined
}
func();
Uit het bovenstaande zou je kunnen denken dat
in de strikte modus this altijd
undefined zal zijn. Maar dat is niet zo! Als je simpelweg
this buiten een functie uitvoert, zal het
een verwijzing naar window bevatten, ongeacht
de modus:
"use strict";
console.log(this); // in this verwijzing naar window
Conclusies
In elke functie kun je this schrijven,
dit zal niet leiden tot JavaScript-fouten.
Maar wat er precies in deze this zal zitten
is niet gedefinieerd tot het moment dat de functie wordt aangeroepen.
Bovendien kan this bij verschillende aanroepen van de functie
verschillende waarden aannemen. Het hangt allemaal af
van de context waarin de functie werd aangeroepen.