JavaScriptda `this` ning bajarilish kontekstining qiymati nima bilan bog'liq?
sobes.tech AI
AIdan javob
JavaScript'da this qiymati funksiyani qanday chaqirilishiga bog‘liq. Asosiy holatlar:
-
Global kontekst: Funktsiyalar tashqarida, qatʼiy rejimda (
'use strict')thisundefinedbo‘ladi. Qatʼiy rejimda emas,thisglobal obyekti (windowbrauzerda,globalNode.jsda). -
Obyekt metodini chaqirish:
thischaqirilayotgan metodga tegishli obyekti ko‘rsatadi.const obj = { prop: 'qiymat', method: function() { // this === obj console.log(this.prop); } }; obj.method(); -
Oddiy funksiyani chaqirish: Qatʼiy rejimda
thisundefined. Qatʼiy rejimda emas,thisglobal obyekti.function myFunction() { // qatʼiy rejimda this === undefined // qatʼiy rejimda emas, this === window (brauzerda) console.log(this); } myFunction(); -
Konstruktor (
new):newoperatori bilan konstruktor funksiyasidan foydalanilganda,thisyangi yaratilgan obyekti ko‘rsatadi.function MyClass(name) { this.name = name; // this === yangi obyekti } const instance = new MyClass('test'); // instance.name === 'test' -
Aniq bog‘lash (
call,apply,bind):call,applyvabindmetodlarithisqiymatini aniq belgilashga imkon beradi.call(thisArg, arg1, arg2, ...): Funksiyani chaqiradi,thisnithisArgga o‘rnatadi va argumentlarni alohida uzatadi.apply(thisArg, [argsArray]): Funksiyani chaqiradi,thisnithisArgga o‘rnatadi va argumentlarni massiv sifatida uzatadi.bind(thisArg): Doimiy ravishdathisbilan bog‘langan yangi funksiyani qaytaradi.
const anotherObj = { value: 42 }; function showValue() { console.log(this.value); } showValue.call(anotherObj); // 42 ni chiqaradi -
Qisqa funksiyalar (
=>): Qisqa funksiyalar o‘zthisiga ega emas.thisqiymati, u aniqlangan leksikal kontekstdan meros oladi.const outerObj = { name: 'Outer', method: function() { const arrowFunc = () => { // this outerObj ning method sifatida chaqirilganidan meros oladi console.log(this.name); }; arrowFunc(); } }; outerObj.method(); // 'Outer' ni chiqaradi const anotherArrowFunc = () => { // this global kontekstdan meros oladi (yoki qatʼiy rejimda undefined) console.log(this); }; anotherArrowFunc(); -
DOM hodisa ishlovchilari: Ko‘pgina hollarda, hodisa ishlovchida
thishodisa yuz beradigan DOM elementiga ishora qiladi.// Brauzerda misol const button = document.querySelector('button'); button.addEventListener('click', function() { // this === button console.log(this.tagName); });
Bu mexanizmlarni tushunish JavaScriptda thisni to‘g‘ri ishlatish uchun juda muhim.