Sobes.tech
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-ը ֆիքսված է լեքսիկոնային կերպով: