Middle
ცოცხალი კოდირება: განსაზღვრეთ კონსოლში გამოსავალი ფუნქციებით, სლაკური ფუნქციებით, ობიექტებით და კონტექსტით (this), call/bind
sobes.tech AI
პასუხი AI-სგან
JavaScript-ში შესრულების კონტექსტი (this) დამოკიდებულია ფუნქციის გამოძახების მეთოდზე. სლაკური ფუნქციებს არ აქვთ საკუთარი this — ისინი მემკვიდრეობით იღებენ მას გარედან ლექსიკალურ გარემოდან.
მაგალითი:
const obj = {
value: 42,
regularFunc: function() {
console.log(this.value);
},
arrowFunc: () => {
console.log(this.value);
}
};
obj.regularFunc(); // 42 — this ეხება obj-ს
obj.arrowFunc(); // undefined ან გარედან კონტექსტის მნიშვნელობა (მაგ. window.value)
// call/bind-ის გამოყენება:
function show() {
console.log(this.name);
}
const user = { name: 'Alice' };
show.call(user); // Alice
const boundShow = show.bind(user);
boundShow(); // Alice
ამიტომ, call და bind საშუალებას აძლევენ მკაფიოდ განვსაზღვროთ this ფუნქციის გამოძახებისას, მაგრამ არ მუშაობს სლაკური ფუნქციებისთან, რადგან მათი this ლექსიკალურად ფიქსირებულია.