Junior
'this' kalit so'zi nima?
sobes.tech AI
AIdan javob
this JavaScript-da kalit so'z bo'lib, hozirgi kod bajarilayotgan kontekstdagi ob'ektga murojaat qiladi. Uning qiymati funksiyani qanday chaqirishga bog'liq.
thisni belgilashning asosiy usullari:
- Global kontekst: Funksiya tashqarisida,
thisglobal ob'ektga (windowbrauzerda,globalNode.js-da) murojaat qiladi. - Oddiy funksiyani chaqirish:
strict modeda (qattiq rejim),thisham global ob'ektga murojaat qiladi (yokiundefined, agar funksiya ob'ekt metod sifatida chaqirilsa va bu ob'ektnullyokiundefinedbo'lsa). Qattiq rejimda,thisundefinedga teng. - Ob'ekt metodi: Agar funksiya ob'ekt metodi sifatida chaqirilsa (ya'ni, nuqta operatori
.orqali),thismetod egasiga murojaat qiladi. - Konstruktor:
newoperatori bilan,thisyangi yaratilayotgan ob'ektga murojaat qiladi. call(),apply(),bind()metodlari: Bu metodlar funksiyani chaqirishdathisqiymatini aniq belgilash imkonini beradi.bind()yangi funksiyanithisbilan bog'lab beradi,call()vaapply()esa funksiyani belgilanganthisbilan chaqiradi.- Qilichli funksiyalar: Qilichli funksiyalar o'zining
thisqiymatiga ega emas.thisqilichli funksiyada, u atrofdagi kontekstdan leksik ravishda meros oladi.
Misollar:
// Global kontekst
console.log(this === window); // true (brauzerda)
// Oddiy funksiyani chaqirish
function myFunction() {
console.log(this);
}
myFunction(); // window (qattiq rejimda emas)
// Ob'ekt metodi
const myObject = {
myMethod: function() {
console.log(this);
}
};
myObject.myMethod(); // myObject
// Konstruktor
function MyConstructor() {
this.value = 10;
console.log(this);
}
const instance = new MyConstructor(); // yangi ob'ekt
// call(), apply(), bind()
function greet(name) {
console.log("Hello, " + name + "! My name is " + this.name);
}
const person = { name: "Alice" };
greet.call(person, "Bob"); // Hello, Bob! My name is Alice
greet.apply(person, ["Bob"]); // Hello, Bob! My name is Alice
const boundGreet = greet.bind(person);
boundGreet("Bob"); // Hello, Bob! My name is Alice
// Qilichli funksiya
const arrowFunction = () => {
console.log(this);
};
arrowFunction(); // window (agar global kontekstda belgilangan bo'lsa)
this qanday aniqlanishini tushunish, to'g'ri JavaScript kodini yozish uchun juda muhimdir.