Javascriptda 'this' kalit so'zi
this
kalit so'zi javascriptda boshqa tillarga qaraganda boshqacharoq ishlaydi va shuningdek, ushbu kalit so'z strict mode
ya'ni qat'iy rejimdagi kodda ham oddiy javascript kodga nisbatan boshqacha ishlaydi.코핀차,
this
kalit so'zining qiymati funksiya qanday chaqirilshiga qarab belgilanadi.Kodni ishga tushirish vaqtida shunchaki qiymat berish orqali uni qiymatini belgilab bo'lmaydi va uning qiymati har safar funksiya chaqirilganda har xil bo'lishi mumkin. ES5'dan boshlab funksiya qay holatda chaqirilishidan qat'iy nazar, funksiyadagi this
kalit so'zi uchun bind()
metodi orqali qiymat berish taklif qilindi. ES2015'및 boshlab esa o'zining this
kalit so'ziga ega bo'lmagan arrow
funksiya tanishtirildi.신탁시스:
This
키이마티:
Oddiy Javascript kodda(non-strict mode) har doim obyekt uchun
reference
bo'la oladi holos, qat'iy rejim( )da esa har qanday qiymatga ega bo'lishi mumkin.타브시피:
글로벌 콘텍트:
Global kontekstda(har qanday funksiyadan tashqarida)
this
kalit so'zi, qat'iy rejimda yoki yo'qligidan qat'iy nazar global obyektga ( window
) ishora qiladi.// Brauzerlarda window obyekti global obyekt hisoblanadi
console.log(this === window); // true
a = 37;
console.log(window.a); // 37
this.b = "ilmHub";
console.log(window.b) // "ilmHub"
console.log(b) // "ilmHub"
eEslatma: Qaysi kontekstdan kod yozishingizdan qat'iy nazar,
globalThis
xususiyatidan foydalanib, har doim global obyektni osongina olishingiz mumkin.
Funksiya Konteksti:
Funksiya ichida
this
kalit so'zining qiymati funksiya qanday chaqirishga bog'liq.Quyidagi kod qat'iy rejimda bo'lmagani uchun va
this
'ning qiymati funksiya chaqirilish paytida belgilanmaganligi tufayli, this
avtomatik tarzda brauzerdagi 글로벌 obyekt bo'lmish window
'ga ishora qiladi.function f1() {
return this;
}
// brauzerda:
f1() === window; // true
// Node'da:
f1() === globalThis; // true
탄약, qat'iy rejimda esa agar kod ishga tushishni boshlaganda
this
kalit so'ziga qiymat berilmagan bo'lsa, quyida holatdagidek, undefined
ya'ni aniqlanmagan qiymatga teng bo'ladi.function f2() {
'use strict'; // qat'iy rejim
return this;
}
f2() === undefined; // true
Eslatma: Ikkinchi misolda
this
undefined
qiymatga ega bo'ldi, chunkif2
obyektning metodi yoki property'si sifatida emas, aksincha to'g'ridan to'g'ri chaqirildi(Masalan:window.f2()
). Brauzerlar ilk bor qat'y rejimni ishlata boshlaganda yuqoridagi xususiyatni amalga oshira olmagan. Natijada ular xato tarzdawindow
obyektga qaytgan.
Funktsiyani chaqirayotganda
this
'ga qiymat berish uchun pastda ko'rsatiladigan misollardagi kabi call()
요키 apply()
그리고 foydalaning:클래스 콘택트:
Classlar ham qaysidir ma'noda funksiya bo'lganligi sababl
this
'ning class va funksiyalar bilan ishlashi bir-biriga o'xshash. Lekin ayrim farqli jihatlarga ega ularni quyida ko'rib chiqamiz:Class konstruktorida
this
햄 이상한 obyektdir. Classdagi barcha statik bo'lmagan metodlar this
ning prototipga qo'shib ketadi:class Example {
constructor() {
const proto = Object.getPrototypeOf(this);
console.log(Object.getOwnPropertyNames(proto));
}
first(){}
second(){}
static third(){}
}
new Example(); // ['constructor', 'first', 'second']
Eslatma: Statik metodlar
this
'ning prototipi emas. Ular classning prototipi.
....다보미 보르
Reference
이 문제에 관하여(Javascriptda 'this' kalit so'zi), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dawroun/javascriptda-this-kalit-sozi-1fop텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)