Skip to content

Obyektda "this" kalit so'zi

JavaScript-da this kalit so'zi u ishlatilgan kontekstga qarab har xil narsalarga ishora qiladi. Obyektlar bilan ishlaganda this-ni tushunish juda muhim.


"this" obyekt metodida

Obyekt metodida ishlatilganda, this o'sha metod tegishli bo'lgan obyektni anglatadi.

Misol

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

Bu yerda thisperson obyektining o'zi. Chunki fullName metodi person obyektining bir qismidir.


Metodni obyektga bog'lash (Explicit Binding)

Siz metodni bir obyektdan boshqasiga ham o'tkazishingiz mumkin. Bunda this qaysi obyekt orqali chaqirilayotganiga qarab o'zgaradi.

Misol

js
const person1 = {
  fullName: function () {
    return this.firstName + ' ' + this.lastName
  }
}

const person2 = {
  firstName: 'Ali',
  lastName: 'Valiyev'
}

// person1-ning metodini person2 uchun ishlatish:
person1.fullName.call(person2) // "Ali Valiyev" qaytaradi

Bu yerda call() metodi fullName ichidagi this-ni person2-ga bog'laydi.


"this" nimalarga ishora qilishi mumkin?

this nima ekanini aniqlash uchun oddiy qoidalar mavjud:

Kontekstthis nima?
Obyekt metodidaObyektning o'zi
Oddiy funksiyadaGlobal obyekt (window yoki undefined strict mode-da)
Arrow funksiyadaO'zi aniqlangan tashqi kontekst (Lexical this)
Hodisalarda (Event)Hodisani qabul qilgan element
call(), apply(), bind()Berilgan argument (obyekt)

Eslatma

Arrow funksiyalar ( () => {} ) o'zining this qiymatiga ega emas. Ular har doim o'zi o'ralgan tashqi funksiya yoki blokning this qiymatini oladi. Shuning uchun obyekt metodlari sifatida arrow funksiyalarni ishlatishda ehtiyot bo'lish kerak.


Pretsedent (Navbatlilik) tartibi

Agar bitta funksiya bir necha usulda bog'langan bo'lsa, this qanday aniqlanadi?

  1. new operatori orqali yaratilganda — Yangi yaratilgan obyekt.
  2. call, apply yoki bind orqali — Ko'rsatilgan obyekt.
  3. Obyekt metodi sifatida — Nuqtadan chapda turgan obyekt.
  4. Global kontekst — Global obyekt.