Sobes.tech
Middle

Kod na żywo: określ wyjście w konsoli dla kodu z funkcjami, funkcjami strzałkowymi, obiektami i kontekstem (this), call/bind

sobes.tech AI

Odpowiedź od AI

W JavaScript kontekst wykonania (this) zależy od sposobu wywołania funkcji. Funkcje strzałkowe nie mają własnego this — dziedziczą je z zewnętrznego środowiska leksykalnego.

Przykład:

const obj = {
  value: 42,
  regularFunc: function() {
    console.log(this.value);
  },
  arrowFunc: () => {
    console.log(this.value);
  }
};

obj.regularFunc(); // 42 — this odnosi się do obj
obj.arrowFunc();   // undefined lub wartość z zewnętrznego kontekstu (np. window.value)

// Użycie call/bind:
function show() {
  console.log(this.name);
}

const user = { name: 'Alice' };

show.call(user); // Alice
const boundShow = show.bind(user);
boundShow(); // Alice

Tak więc, call i bind pozwalają jawnie ustawić this podczas wywołania funkcji, ale nie działają z funkcjami strzałkowymi, ponieważ ich this jest ustalony leksykalnie.