Skip to content

Funksiyalarda "this"

JavaScript-da this kalit so'zi u qayerda va qanday chaqirilganiga qarab turli xil obyektlarga ishora qiladi.


"this" nima?

Funksiya ichida this — bu o'sha funksiyaning "egasidir" (owner).

Kontekstga qarab qiymatlar:

  • Obyekt metodida: this o'sha metod tegishli bo'lgan obyektga ishora qiladi.
  • Yolg'iz (alohida) chaqirilganda: this global obyektga (window brauzerda) ishora qiladi.
  • Funksiya e'lonida (Function declaration): this global obyektga ishora qiladi.
  • Strict mode ostida: funksiya ichida this qiymati undefined bo'ladi.
  • Hodisalarda (Event): this hodisani qabul qilgan HTML elementiga ishora qiladi.

Obyekt metodida "this"

Obyekt ichida aniqlangan funksiya (metod) ichida this ishlatilsa, u o'sha obyektning o'zini anglatadi.

Misol

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

Global kontekstda "this"

Agar funksiya obyekt tashqarisida e'lon qilingan bo'lsa, u global obyektga tegishli bo'ladi.

Misol

js
function myFunction() {
  return this
}
// Brauzerda bu [object Window] qaytaradi

Arrow funksiyalarda "this" (Lexical this)

Arrow funksiyalar (=>) o'zining shaxsiy this qiymatiga ega emas. Ular har doim o'zi aniqlangan tashqi (o'rab turgan) kontekstning this qiymatini oladi.

Misol

js
const person = {
  firstName: 'Ali',
  sayHi: () => {
    return 'Salom ' + this.firstName
  }
}
// Diqqat! Bu yerda 'this' global window obyektiga ishora qiladi,
// shuning uchun result: "Salom undefined" bo'lishi mumkin.

Eslatma

Obyekt metodlarini yozishda doimiy ravishda an'anaviy function kalit so'zidan foydalanish tavsiya etiladi, agar sizga o'sha obyektning this konteksti kerak bo'lsa.


Explicit Binding (Aniq bog'lash)

JavaScript-da call(), apply() va bind() metodlari yordamida this qiymatini bir obyektdan boshqasiga o'tkazish (bog'lash) mumkin. Bu haqda keyingi bo'limlarda batafsil to'xtalamiz.