Sobes.tech
Middle

Function.prototype.bind эмне кылат жана эмне үчүн керек?

sobes.tech AI

AIден жооп

function.prototype.bind жаңы функция түзөт, ал чакырылганда, this мааниси (яъни, чакыруу контексти) белгиленет жана, каалоо боюнча, белгилүү бир аргументтердин топтому, алар жаңы функция чакырылганда берилгендерден мурда коюлат.

Эмне үчүн керек:

  1. Контекстти (this) бекитүү: Өзгөчө асинхрондук операцияларда, иш-чара иштетүүчүсүндө же объекттердин ыкмаларын callback катары өткөрүүдө пайдалуу, анткени thisтин стандарттык жүрүм-туруму өзгөрүшү мүмкүн. bind ыкмасын оригиналдуу объекттин контекстинде иштетүүнү камсыздайт.
  2. Функциялардын жарым-жартылай колдонулушу (Currying): Бул оригиналдуу функциянын баштапкы аргументтерин бекиткен жаңы функцияны түзүүгө мүмкүндүк берет.

Контекстти бекитүү мисалы:

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

  greet() {
    console.log(`Салам, ${this.name}`);
  }
}

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

// greetMethod глобалдык контекстте (же strict режиминде `undefined`), `this` MyClass эмес
greetMethod(); // Чыгуу: Салам, `undefined` (же ката)

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

// boundGreetMethod - `instance` контекстинде чакырылат
boundGreetMethod(); // Чыгуу: Салам, MyClass Instance

Жарым-жартылай колдонуу мисалы:

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

const multiplyByTwo = multiply.bind(null, 2); // Биринчи аргументти 2 деп бекитебиз

console.log(multiplyByTwo(5)); // Чыгуу: 10 (ушул эле multiply(2, 5))