JavaScriptda kontekst nima?
sobes.tech AI
AIdan javob
JavaScript'da (this) kontekst, hozirda bajarilayotgan funksiyaga tegishli ob'ektga ishora qiladi. Uning qiymati funksiyani qanday chaqirilganiga qarab belgilanadi, uning aniqlangan joyiga emas.
Kontekstni belgilashning asosiy usullari:
-
Global kontekst: Funktsiyalar tashqarisida, notiq modda,
thisglobal ob'ektga (windowbrauzerda,globalNode.jsda) ishora qiladi. Noto'g'ri modda,thisundefinedbo'ladi.// Noto'g'ri mod (brauzerda) console.log(this === window); // true // Noto'g'ri mod "use strict"; console.log(this === undefined); // true -
Obyekt metodlari: Agar funksiya obyekt metod sifatida chaqirilsa (
obj.method()),thisfunksiyaning ichida bu obyektga (obj) ishora qiladi.const user = { name: "John", greet: function() { console.log("Hello, " + this.name); } }; user.greet(); // Chiqish: Hello, John (this, user'ga ishora qiladi) -
Funktsiyani chaqirish (
call,apply,bind):callvaapplymetodlari funksiyani aniq belgilangan kontekst bilan chaqiradi.bindesa, statik kontekst bilan yangi funksiya yaratadi.function sayName(greeting) { console.log(greeting + ", " + this.name); } const person = { name: "Peter" }; sayName.call(person, "Hi"); // Chiqish: Hi, Peter (this = person) sayName.apply(person, ["Hello"]); // Chiqish: Hello, Peter (this = person) const boundSayName = sayName.bind(person, "Hey"); boundSayName(); // Chiqish: Hey, Peter (this = person) -
Konstruktor (
new):newoperatori bilan funksiyani chaqirganda, yangi bo'sh obyekt yaratiladi, vathiskonstruktor funksiyada bu yangi ob'ektga ishora qiladi.function Person(name) { this.name = name; } const john = new Person("John"); console.log(john.name); // Chiqish: John (this, Person ichida, john'ga ishora qiladi) -
Qalam funksiyalar: Qalam funksiyalar o'zining kontekstiga ega emas.
thisqalam funksiyada tashqi (lexikal) muhitdan olinadi, ya'ni funksiyaning yaratilgan joyidan.const user = { name: "Alice", greet: function() { const innerGreet = () => { console.log("Hello, " + this.name); // this, greet'dan olinadi (user'ga ishora qiladi) }; innerGreet(); } }; user.greet(); // Chiqish: Hello, Alice
this qanday aniqlanishini tushunish, JavaScript'da ob'ektlar, metodlar va voqea ishlovchilar bilan to'g'ri ishlash uchun juda muhimdir.