Kontext nepřipojené funkce v JavaScriptu
Podívejme se, co se stane, pokud ve funkci
uvedeme this, ale nepřipojíme ji
k žádnému prvku, například takto:
function func() {
console.log(this);
}
func();
V tomto případě výsledek závisí na tom,
zda je povolen
přísný režim
nebo ne. Pokud režim není přísný,
pak v this bude uložen odkaz na
window:
function func() {
console.log(this); // odkaz na okno window
}
func();
Pokud je režim přísný, pak v this bude
uloženo undefined:
"use strict";
function func() {
console.log(this); // undefined
}
func();
Z výše uvedeného by se mohlo zdát, že
v přísném režimu bude this vždy
undefined. Ale kdepak! Pokud jednoduše
vypíšeme this mimo funkci, pak v něm
bude odkaz na window bez ohledu
na režim:
"use strict";
console.log(this); // v this odkaz na window
Závěry
V jakékoli funkci lze napsat this,
to nepovede k žádným chybám JavaScriptu.
Ale co přesně bude uloženo v tomto this
není definováno až do okamžiku volání funkce.
A přitom při různých voláních funkce může this
nabyvat různých hodnot. Vše závisí
na kontextu, ve kterém byla funkce volána.