Sobes.tech
Junior

JavaScriptda this nima?

sobes.tech AI

AIdan javob

JavaScriptda this — bu funksiyaning bajarilish kontekstini ko‘rsatadigan kalit so‘z. Uning qiymati funksiyani qanday chaqirishga bog‘liq.

Odatiy holda, this oddiy funksiyani chaqirganda global obyekti (brauzarda window) ga ishora qiladi, agar qat’iy rejimda bo‘lmasa.

Qat’iy rejimda ('use strict') esa, shuningdek, this undefined bo‘ladi.

Obyekt metodini chaqirganda, this o‘sha obyektga ishora qiladi.

const obj = {
  method: function() {
    console.log(this); // obj
  }
};
obj.method();

Konstruktor (new bilan funksiyani chaqirish) chaqirilganda, this yangi yaratilgan obyektga ishora qiladi.

function Constructor() {
  console.log(this); // Constructor ning instantsiyasi
}
const instance = new Constructor();

call, apply, bind metodlaridan foydalanilganda, this aniq birinchi argument sifatida belgilangan bo‘ladi.

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

const person = { name: 'Ali' };

greet.call(person); // Salom, Ali!
greet.apply(person); // Salom, Ali!

const boundGreet = greet.bind(person);
boundGreet(); // Salom, Ali!

Arrow funksiyalar (Arrow Functions) this ga ega emas. U leksik tarzda, u joyda aniqlangan kontekstdan meros oladi.

const obj2 = {
  name: 'Bob',
  greet: function() {
    const arrowGreet = () => {
      console.log(`Salom, ${this.name}!`); // this, obj2 ga ishora qiladi
    };
    arrowGreet();
  }
};
obj2.greet(); // Salom, Bob!

const obj3 = {
  name: 'Charlie',
  greet: () => {
    console.log(`Salom, ${this.name}!`); // this, window (yoki strict rejimda undefined), obj3 emas
  }
};
obj3.greet(); // Salom, undefined! (yoki xato)

this konteksti, ayniqsa, callbacklar yoki asinxron operatsiyalarni o'tkazishda, noaniq bo‘lishi mumkin. this qoidalarini tushunish, JavaScriptning to‘g‘ri ishlashida muhimdir.