JavaScript'da obyektlar (Objects), dot va bracket notation, methodlar va this kalit so'zi, Object.keys/values/entries, nested objects, Object.freeze hamda to'liq mashq va testlar.
Object — real hayotdagi narsalarni ifodalash uchun ishlatiladigan, key-value juftliklaridan iborat ma'lumot tuzilmasi.
Object — bir nechta xususiyat (property)ni birgalikda saqlaydigan tuzilma. Har bir property key: value shaklida yoziladi.
Bitta odamning ismi, yoshi va shahrini alohida-alohida variable'larda saqlash o'rniga, ularni bitta object ichida birlashtirish mumkin.
🪪 Object — bu shaxsning pasporti: ism, yosh, manzil kabi ma'lumotlar bitta hujjatda (object) jamlangan.
script.jsJavaScriptlet person = {name: "Ali",age: 25,city: "Toshkent"};console.log(person.name); // "Ali"
person — object, name, age, city — uning propertylari (xususiyatlari).
Object propertylariga ikki xil usulda murojaat qilish mumkin: dot notation va bracket notation.
script.jsJavaScriptlet user = { name: "Vali", age: 30 };console.log(user.name); // Dot notationconsole.log(user["age"]); // Bracket notation
| Usul | Qachon ishlatiladi |
|---|---|
Dot notation (user.name) | Property nomi oldindan ma'lum bo'lsa |
Bracket notation (user["name"]) | Property nomi variable ichida bo'lsa yoki dinamik bo'lsa |
script.jsJavaScriptlet key = "age";console.log(user[key]); // 30
⚠️ Common Mistake
Dinamik key bilan user.key yozish ishlamaydi — bu userning "key" degan propertysini qidiradi, ageni emas. Bunday holatda albatta user[key] ishlatish kerak.
script.jsJavaScriptlet car = { brand: "Toyota" };car.model = "Camry"; // qo'shishcar.brand = "Honda"; // o'zgartirishdelete car.model; // o'chirishconsole.log(car); // { brand: "Honda" }
Object propertysi function ham bo'lishi mumkin — bunday holatda uni method deb ataymiz.
script.jsJavaScriptlet person = {name: "Dilnoza",greet: function () {console.log("Salom, men " + this.name);}};person.greet(); // "Salom, men Dilnoza"
this — methodni chaqirayotgan object'ga ishora qiladi. Bu haqda Chapter 13'da batafsil to'xtalamiz.
script.jsJavaScriptlet person = {name: "Dilnoza",greet() {console.log("Salom, men " + this.name);}};
| Metod | Qaytaradi |
|---|---|
Object.keys(obj) | Barcha kalitlar array'i |
Object.values(obj) | Barcha qiymatlar array'i |
Object.entries(obj) | [key, value] juftliklari array'i |
script.jsJavaScriptlet book = { title: "Sariq devni minib", pages: 320 };console.log(Object.keys(book)); // ["title", "pages"]console.log(Object.values(book)); // ["Sariq devni minib", 320]console.log(Object.entries(book)); // [["title", "..."], ["pages", 320]]
💡 Key Idea
Bu metodlar object bilan for...of loop ishlatishga imkon beradi, chunki for...indan farqli, ular array qaytaradi.
script.jsJavaScriptfor (let [key, value] of Object.entries(book)) {console.log(key + ": " + value);}
Object ichida object bo'lishi mumkin — bu murakkab ma'lumot tuzilmalarini ifodalash uchun ishlatiladi.
script.jsJavaScriptlet user = {name: "Aziz",address: {city: "Samarqand",street: "Registon ko'chasi"}};console.log(user.address.city); // "Samarqand"
🔗 Connection
Nested object'larga xavfsiz murojaat qilish uchun Chapter 3'da o'rgangan Optional Chaining (?.) juda foydali:
console.log(user.address?.zip) — xatolik bermaydi, undefined qaytaradi.
Object'ni "muzlatib" qo'yish — uning propertylarini o'zgartirib bo'lmaydigan qilish.
script.jsJavaScriptconst settings = Object.freeze({ theme: "dark" });settings.theme = "light"; // e'tiborga olinmaydiconsole.log(settings.theme); // "dark"
🔥 Important
const bilan e'lon qilingan object'ning o'zi qayta assign qilinmaydi, lekin ichidagi propertylarini o'zgartirish mumkin — agar Object.freeze() ishlatilmasa.
Task:
name, age, profession propertylariga ega object yarating va uning barcha qiymatlarini konsolga chiqaring.
Required Concepts:
object.propertyName shaklidan foydalaning.Task:
Berilgan object ichidagi barcha key va value juftliklarini "key: value" formatida konsolga chiqaring.
script.jsJavaScriptlet product = { name: "Laptop", price: 1200, inStock: true };
Required Concepts:
Object.entries()for...offor (let [key, value] of Object.entries(product)) dan foydalaning.Task:
Ikki object'ni birlashtirib, yangi object yaratadigan function yozing (agar bir xil key bo'lsa, ikkinchi object'ning qiymati ustunlik qilsin).
Required Concepts:
Object.assign(){ ...obj1, ...obj2 } sintaksisidan foydalaning (Chapter 16'da batafsil o'rganiladi).script.jsJavaScriptlet obj1 = { value: 10 };let obj2 = obj1;obj2.value = 20;console.log(obj1.value);
🧠 Think first! Javobni ko'rishdan oldin kamida 30 soniya o'ylang.
<details> <summary>Answer</summary> 20Why?
Object — reference type (Array kabi). obj2 = obj1 object'ning nusxasini emas, xuddi shu object'ga havolani yaratadi. Shuning uchun obj2ni o'zgartirish obj1ga ham ta'sir qiladi.
Quyidagi kodda muammo bor:
script.jsJavaScriptlet user = {name: "Karim",greet: function () {console.log("Salom, " + name);}};user.greet();
Your Task:
Yechim:
</details>script.jsJavaScriptlet user = {name: "Karim",greet: function () {console.log("Salom, " + this.name);}};user.greet(); // "Salom, Karim"
this ishlatiladi.Object.keys/values/entries — object bilan ishlashni osonlashtiradi.obj[key]) ishlatiladi.this — o'sha object'ga ishora qiladi.Object.entries() object'ni for...of bilan aylanib chiqishga imkon beradi.= orqali nusxalash asl object'ga ham ta'sir qiladi.Object.freeze() object'ni to'liq o'zgarmas qilib qo'yadi.script.jsJavaScriptlet obj = {key: "value",method() {return this.key;}};obj.key; // dot notationobj["key"]; // bracket notationdelete obj.key; // o'chirishObject.keys(obj); // kalitlarObject.values(obj); // qiymatlarObject.entries(obj); // juftliklarObject.freeze(obj); // o'zgarmas qilish
Mavzu bo‘yicha tushunchalaringizni interaktiv test orqali sinovdan o‘tkazing va natijalarni bilib oling.
Darslikda o‘rganilgan qoidalarga asosan real kod yozing, testlardan o‘tkazing va yechimlarni mustahkamlang.
Test Sinovi
Hali topshirilmagan (kamida 75% kerak)
Amaliy Masalalar
0 / 3 ta yechildi (kamida 75% kerak)
Dars sifati va mazmunini yaxshilash uchun o‘z haqqoniy bahoingizni qoldiring.
Mavzuni to‘liq o‘zlashtirish uchun test sinovi, amaliy kodlash va bog‘liq darslar
O‘z bilimingizni interaktiv test savollari orqali tekshiring va darhol xatolarni tahlil qiling.
Nazariyani real kod yozish bilan mustahkamlang, avtomatik testlardan o‘ting va XP to‘plang.
Kurs bo‘yicha keyingi va bog‘liq mavzular: