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-ը
կարող է ընդունել տարբեր արժեքներ: Ամենը կախված է
այն կոնտեքստից, որում ֆունկցիան է կանչվել: