Контекст на несврзана функција во JavaScript
Ајде да видиме што ќе се случи ако во функција
ја означиме this, но не ја врзуваме за
ниту еден елемент, вака:
function func() {
console.log(this);
}
func();
Во овој случај, резултатот зависи од тоа дали
строгиот
режим е вклучен или не. Ако режимот не е строг,
тогаш во this ќе се чува референца на
window:
function func() {
console.log(this); // референца на прозорецот window
}
func();
А ако режимот е строг, тогаш во this ќе
се чува undefined:
"use strict";
function func() {
console.log(this); // undefined
}
func();
Од горенаведеното може да изгледа дека
во строгиот режим this секогаш ќе
биде undefined. Како да не е така! Ако едноставно
ја испечатиме this надвор од функција, тогаш во неа
ќе има референца на window независно
од режимот:
"use strict";
console.log(this); // во this референца на window
Заклучоци
Во која било функција може да се напише this,
ова нема да доведе до какви било грешки во JavaScript.
Но, што точно ќе се наоѓа во овој this
не е дефинирано до моментот на повикување на функцијата.
Притоа, при различни повици на функцијата this
може да има различна вредност. Сè зависи
од контекстот во кој е повикана функцијата.