Sobes.tech
Middle

Co robi i do czego służy funkcja function.prototype.bind?

sobes.tech AI

Odpowiedź od AI

function.prototype.bind tworzy nową funkcję, która podczas wywołania ma ustawioną wartość this (czyli kontekst wywołania) oraz opcjonalnie określony zestaw argumentów, które poprzedzają te przekazywane podczas wywołania nowej funkcji.

Do czego służy:

  1. Ustalanie kontekstu (this): Szczególnie przydatne w operacjach asynchronicznych, obsłudze zdarzeń lub podczas przekazywania metod obiektów jako callbacków, gdzie standardowe zachowanie this może się zmieniać. bind gwarantuje, że metoda będzie wykonana w kontekście oryginalnego obiektu.
  2. Częściowe zastosowanie funkcji (Currying): Pozwala na utworzenie nowej funkcji z ustalonymi początkowymi argumentami oryginalnej funkcji.

Przykład ustalania kontekstu:

class MyClass {
  constructor() {
    this.name = 'MyClass Instance';
  }

  greet() {
    console.log(`Cześć z ${this.name}`);
  }
}

const instance = new MyClass();
const greetMethod = instance.greet;

// greetMethod wywoływana w kontekście globalnym (lub undefined w trybie strict), `this` nie jest MyClass
greetMethod(); // Wypisze: Cześć z undefined (lub błąd)

const boundGreetMethod = instance.greet.bind(instance);

// boundGreetMethod wywoływana z kontekstem instance
boundGreetMethod(); // Wypisze: Cześć z MyClass Instance

Przykład zastosowania częściowego:

function multiply(a, b) {
  return a * b;
}

const multiplyByTwo = multiply.bind(null, 2); // Ustalamy pierwszy argument na 2

console.log(multiplyByTwo(5)); // Wypisze: 10 (to samo co multiply(2, 5))