Skip to content

JavaScript funksiyasi "bind()"

bind() metodi obyektning metodini o'sha obyektga yoki boshqa bir obyektga doimiy ravishda (permanent) bog'lab qo'yadigan yangi funksiya yaratadi.


call() va apply() dan farqi

call() va apply() funksiyani darhol ishga tushiradi. bind() esa funksiyani ishga tushirmaydi, balki uni bog'langan holatda saqlab qo'yadi.

Misol

js
const person = {
  firstName: 'John',
  lastName: 'Doe',
  fullName: function () {
    return this.firstName + ' ' + this.lastName
  }
}

const member = {
  firstName: 'Hege',
  lastName: 'Nilsen'
}

// person-ning metodini member-ga doimiy bog'lash:
let fullName = person.fullName.bind(member)

// Endi fullName() chaqirilganda doim member-ni ishlatadi:
console.log(fullName()) // "Hege Nilsen"

this qiymatini "yo'qotishdan" saqlanish

Ba'zan bir funksiyani callback sifatida boshqa joyga yuborganimizda, uning this konteksti yo'qolishi mumkin. bind() buni oldini oladi.

Misol: Obyekt metodini callback sifatida ishlatish

js
const person = {
  firstName: 'John',
  lastName: 'Doe',
  display: function () {
    console.log(this.firstName + ' ' + this.lastName)
  }
}

// 3 soniyadan keyin person.display-ni chaqirish
setTimeout(person.display, 3000)
// Natija: "undefined undefined" (chunki this konteksti yo'qoldi)

// Bind yordamida yechim:
let display = person.display.bind(person)
setTimeout(display, 3000)
// Natija: "John Doe"

Qachon ishlatish kerak?

Ayniqsa, hodisalar (Event Listeners) va vaqtinchalik funksiyalarda (setTimeout, setInterval) metodlarni yubarayotganingizda, ularning o'z obyektiga bog'liqligini saqlab qolish uchun bind() juda foydali.