Sobes.tech
Middle

Nima uchun JavaScriptda 'this' kalit so'zidan foydalanib bo'lmaydi?

sobes.tech AI

AIdan javob

this ni ok funksiyalar uchun o'z kontekstiga bog'lash uchun ok funksiyalarida ishlatilmasligi kerak. Ok funksiyalar o'zining thisini yaratmaydi, balki ularni aniqlagan muhitdan meros oladi.

Shuningdek, this asinxron operatsiyalar yoki voqea ishlovchilarida, aniq kontekst bog'lanmagan holda (.bind(), .call(), .apply()) ishonchli emas, chunki uning qiymati o'zgarishi yoki global ob'ektga (no-strict rejimda) yoki undefinedga aylanishi mumkin.

Misol:

function an'anaviyFunktsiya() {
  console.log(this); // this chaqirishga bog'liq
}

const okFunktsiya = () => {
  console.log(this); // this tashqi muhitdan meros oladi
};

const ob = {
  metod: an'anaviyFunktsiya
};

ob.metod(); // this - ob
an'anaviyFunktsiya(); // this - global ob'ekt (window / global)

const ob2 = {
  metod: okFunktsiya
};

ob2.metod(); // this - meros olingan. Agar global muhitda aniqlangan bo'lsa, global/window.