Sobes.tech
Junior

Функсияи `Function.prototype.bind` чӣ мекунад ва барои чӣ лозим аст?

sobes.tech AI

Ҷавоб аз AI

Function.prototype.bind яксоздає нову функцію, яка при виклику матиме фіксований контекст (this) і, опціонально, попередньо визначені аргументи, що йдуть перед будь-якими аргументами, переданими новій функції під час виклику.

Це корисно для:

  • збереження контексту при передачі методів як callback-ів або обробників подій.
  • часткового застосування (currying) функцій.
// Приклад збереження контексту

const user = {
  name: 'Alice',
  greet: function() {
    console.log(`Привіт, ${this.name}!`);
  }
};

const greetUser = user.greet;
greetUser(); // Привіт, undefined! (контекст втрачено)

const bindedGreetUser = user.greet.bind(user);
bindedGreetUser(); // Привіт, Alice! (контекст збережено)
// Приклад часткового застосування

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

const multiplyByTwo = multiply.bind(null, 2); // null як контекст, оскільки він не потрібен

console.log(multiplyByTwo(5)); // 10