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-მა
შეიძლება მიიღოს სხვადასხვა მნიშვნელობა. ყველაფერი დამოკიდებულია
იმ კონტექსტზე, რომელშიც ფუნქცია გამოიძახეს.