Kontext neviazanej funkcie v JavaScripte
Pozrime sa, čo sa stane, ak v funkcii
uviesť this, ale neviazať ju k
žiadnemu prvku, takto:
function func() {
console.log(this);
}
func();
V tomto prípade výsledok závisí od toho,
či máme prísny
režim alebo nie. Ak režim nie je prísny,
v this bude uložený odkaz na
window:
function func() {
console.log(this); // odkaz na okno window
}
func();
Ak je režim prísny, v this bude
uložené undefined:
"use strict";
function func() {
console.log(this); // undefined
}
func();
Z vyššie uvedeného by sa mohlo zdať, že
v prísnom režime bude this vždy
undefined. Ale nie! Ak jednoducho
vypíšeme this mimo funkcie, bude v ňom
odkaz na window nezávisle
od režimu:
"use strict";
console.log(this); // v this odkaz na window
Závery
V akejkoľvek funkcii môžeme napísať this,
nespôsobí to žiadne chyby JavaScriptu.
Ale čo presne bude v tomto this
nie je definované až do momentu volania funkcie.
A pri rôznych volaniach funkcie môže this
nadobúdať rôzne hodnoty. Všetko závisí
od kontextu, v ktorom bola funkcia volaná.