Middle
რატომ არ შეიძლება გამოიყენოს 'this' საკვანძო სიტყვა JavaScript-ში?
sobes.tech AI
პასუხი AI-სგან
ეს this არ შეიძლება გამოყენებულ იქნას სლაკნული ფუნქციებში საკუთარი კონტექსტის დასაბამად. სლაკნული ფუნქციები არ ქმნიან საკუთარ this-ს, არამედ მემკვიდრეობით იღებენ მის მნიშვნელობას იმ გარემოდან, სადაც გამოაცხადეს.
ასევე, this არ არის საიმედო ასინქრონული ოპერაციების ან მოვლენის დამუშავებლების უკუგანახევრებში, თუ კონტექსტის მკაფიო ბმული არ არის (.bind(), .call(), .apply()), რადგან მისი მნიშვნელობა შეიძლება შეიცვალოს ან გახდეს გლობალური ობიექტი (არასკრიტულ რეჟიმში) ან undefined (სკრიტულ რეჟიმში).
მაგალითი:
ფუნქცია ტრადიციული() {
console.log(this); // this დამოკიდებულია გამოძახებაზე
}
სლაკნული ფუნქცია = () => {
console.log(this); // this მემკვიდრეობით იღებს გარედან
};
ობიექტი = {
მეთოდი: ტრადიციული
};
ობიექტი.მეთოდი(); // this - ობიექტი
ტრადიციული(); // this - გლობალური ობიექტი (window / global)
ობიექტი2 = {
მეთოდი: სლაკნული
};
ობიექტი2.მეთოდი(); // this - მემკვიდრეობით. თუ გლობალურ გარემოშია განსაზღვრული, მაშინ global/window.