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.