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 е фиксирано лексикално.