Sobes.tech
Middle

function.prototype.bind nima nima qiladi va nima uchun kerak?

sobes.tech AI

AIdan javob

function.prototype.bind yangi funktsiya yaratadi va chaqirilganda, this qiymati (ya'ni chaqirish konteksti) o'rnatiladi va, ixtiyoriy ravishda, chaqirishda berilgan argumentlardan oldin keladigan aniq argumentlar to'plami ham belgilanishi mumkin.

Nima uchun kerak:

  1. Kontekstni (this) belgilash: Ayniqsa, asinxron operatsiyalar, voqea ishlovchilar yoki ob'ekt metodlarini callback sifatida uzatishda foydali, bu yerda this ning standart xatti-harakatlari o'zgarishi mumkin. bind metodni asl ob'ekt kontekstida bajarilishini kafolatlaydi.
  2. Funktsiyalarni qisman qo'llash (Currying): Asl funksiyaning boshlang'ich argumentlarini belgilab, yangi funksiyani yaratishga imkon beradi.

Kontekstni belgilash misoli:

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

  greet() {
    console.log(`Salom, ${this.name}`);
  }
}

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

// greetMethod global kontekstda (yoki strict mode'da undefined) chaqirilsa, `this` MyClass emas
greetMethod(); // Chiqish: Salom, undefined (yoki xato)

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

// boundGreetMethod instance kontekstida chaqiriladi
boundGreetMethod(); // Chiqish: Salom, MyClass Instance

Qisman qo'llash misoli:

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

const multiplyByTwo = multiply.bind(null, 2); // Birinchi argumentni 2 ga belgilash

console.log(multiplyByTwo(5)); // Chiqish: 10 (xuddi multiply(2, 5))