Neprivietos funkcijos kontekstas JavaScript
Pažiūrėkime, kas atsitiks, jei funkcijoje
nurodysime this, bet nepririšime jos prie
jokio elemento, štai taip:
function func() {
console.log(this);
}
func();
Šiuo atveju rezultatas priklauso nuo to,
ar esame įjungę
strict režimą,
ar ne. Jei režimas nėra strict,
tada this talpins nuorodą į
window:
function func() {
console.log(this); // nuoroda į window
}
func();
O jei režimas yra strict, tada this
talpins undefined:
"use strict";
function func() {
console.log(this); // undefined
}
func();
Iš to, kas pasakyta aukščiau, gali atrodyti, kad
strict režime this visada bus
undefined. Tačiau ne! Jei tiesiog
išvesti this už funkcijos ribų, jame
bus nuoroda į window nepriklausomai
nuo režimo:
"use strict";
console.log(this); // this talpina nuorodą į window
Išvados
Bet kurioje funkcijoje galima parašyti this,
tai nesukels jokių JavaScript klaidų.
Tačiau, kas tiksliai bus tame this
neapibrėžta iki funkcijos iškvietimo momento.
Be to, esant skirtingiems funkcijos iškvietimams, this
gali įgauti skirtingas reikšmes. Viskas priklauso
nuo konteksto, kuriame funkcija buvo iškviesta.