JavaScriptда unbind қилинмаган функциянинг контексти
Келинг, функцияда 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 бўлади
деб ўйлаш мумкин. Абдурa! Агар this-ни
функция ташқарисида чиқарсак, унда режимимизга
қарамай window-га ишора бўлади:
"use strict";
console.log(this); // this-да window-га ишора
Хулоса
Ҳар қандай функцияда this ёзиш мумкин,
бу JavaScript-да ҳеч қандай хатоларга олиб келмайди.
Аммо, айнан шу this-да нима жойлашади
функция чақирилган пайтгача аниқланмайди.
Ҳаттоки, функциянинг ҳар хил чақирилишларида
this турли хил қийматларни қабул қилиши мумкин.
Ҳаммаси функция қайси контекстда чақирилганига боғлиқ.