JavaScript: Obyekt

JavaScript: Obyekt

Kirish

Bizga ma'lumki, JavaScriptda 8 xil ma'lumot turlari mavjud. Ularning 7 tasi primitive, chunki ular faqat sodda va yagona turdagi ma'lumotni saqlay oladi (string, number va hokazo)

Ma'lumot turlarining yagona turi borki, ular o'zlarida kalitlangan va murakkab ma'lumotlarni saqlay oladi. Obyektlar.

Obyektlar figurali qavslar {...} yordamida yaratilishi mumkin. Ma'lumot turlari esa ularda "kalit: ma'lumot" ko'rinishida saqlanadi. Ya'ni, saqlanadigan har bir ma'lumotning biriktirilgan kalit so'zi mavjud.

Bu holatni siz javonda nomlangan fayllar misolida tushunishingiz mumkin. Har bir ma'lumot faqat o'ziga tegishli yoki biriktirilgan faylda saqlanadi.

Bo'sh obyekt esa quyidagicha yaratiladi:

let user = new Object(); // "object constructor"  
let user = {}; // "object literals"

Xususiyatlar

Biz osonlik bilan obyektga ma'lumot kiritishimiz mumkin:

let user = {             // obyekt
    name: "To'raqul",   // kalit: name | ma'lumot: To'raqul
    age: 18             // kalit: age| ma'lumot: 18
};

Ma'lumotning kalit so'zidan oldin " : " va ma'lumotning qiymati (value) joy olgan.

user obyektida ikkita ma'lumot joy olgan:

  1. Birinchisi name kalit so'zi bilan "To'raqul"

  2. Keyingisi esa age kalit so'zi bilan 18

Endi, user obyetimizni fayl ko'rinishida tasavvur qilsak:

Ushbu ma'lumotlarni istalgan payt o'chirish va foydalanish mumkin.

Aynan bir turdagi obyekt ma'lumotini olish uchun esa nuqta " . " belgisidan foydalanamiz:

console.log(user.name) // To'raqul
console.log(user.age) // 18

Saqlanadigan va qo'shiladigan bo'lgan ma'lumot turi istalgan bo'lishi mumkin. Masalan, keling boolean turigan ma'lumotni kiritamiz:

user.isStudent = true;

Bu holatdan keyin esa user obyetimiz quyidagi ko'rinishga ega bo'ladi:

let user = {            
    name: "To'raqul",   
    age: 18,
    isStudent: true             
};

Ma'lum bir ma'lumotni o'chirishni istasak, delete operatoridan foydalanamiz:

delete user.age

Natijada esa, user obyektimiz quyidagi ko'rinishga keladi:

let user = {            
    name: "To'raqul",   
    isStudent: true             
};

Ma'lumot kali so'zlari bir necha so'zlardan iborat bo'lishi ham mumkin, lekin ular iqtibos shaklida " " keltirilishi kerak:

let user = {            
    name: "To'raqul",   
    isStudent: true,
    "tez yuguradi": true             
};

💡
E'tibor bering, ma'lumotlar vergul " , " bilan ajratiladi

Kvadrat qavslar

Ko'p so'zli kalit so'zlarni olish va foydalanishda nuqta belgisidan foydalanish xatolik beradi:

user.tez yuguradi = true; // sintaks xatolik

Bu ko'rinishdagi holatlarni JavaScript tushunmaydi. Kompilyator o'ylaydiki, biz xuddiki user.tez ma'lumotni olishni xohlayapmiz-u, undan keyin qanaqadir notanish yuguradi so'zini qo'shib yuborganmiz. Natijada esa, sintaks xatolik ro'y beradi.

Nuqta belgisidan foydalanish uchun: kalit so'z bosh joylardan iborat bo'lmasligi, raqamdan boshlanmasligi va turli belgilar bo'lmasligi kerak. ($ va _ dan tashqari)

Boshqa holatda biz, kvadrat qavslardan[...] foydalansak bo'ladi:

let user = {};

// ma'lumot kiritish
user["tez yuguradi"] = true;

// foydalanish
console.log(user["tez yuguradi"]); // true

// o'chirish
delete user["tez yuguradi"];

"in" operatori

Ma'lumki, JavaScriptda mavjud bo'lmagan ma'lumotni olish undefined qiymatini qaytaradi. Xuddi shunday, obyektda biror ma'lumot bor yoki yo'qligini tekshirish uchun shu holatdan foydalasak bo'ladi:

let user = {};

console.log(user.mavjudEmas === undefined); // true chunki mavjudEmas ma'lumoti yo'q

Lekin, buning chiroyliroq yo'li bor: in operatori.

Boolean qaytaradi. Agar ma'lumot mavjud bo'lsa true ,aksincha esa false. Sintaks esa quyidagicha:

"kalit" in obyekt

Masalan:

let user = {name: "Jo'raqul", age: 19};

console.log("name" in user); // true
console.log("mavjudEmas" in user); // false
💡
E'tibor bering, in operatorining chap tarafi, ya'ni biz tekshirayotgan ma'lumot, kalit so'z bo'lishi kerak, ma'lumot qiymati emas.

for...in loop

Obyekt kalit so'zlari bo'ylab birma bir yurish uchun alohida for...in loopi mavjud.

Masalan, user obyektini barcha ma'lumotlarini olish uchun:

let user = {            
    name: "Boltaqul",   
    isAdmin: true,
    age: 20
};

for(let key in user){
    // kalit so'zlar
    console.log(key); // name, isAdmin, age
    // ma'lumot qiymatlari
    console.log(user[key]); // Boltaqul, true, 30    
}
💡
E'tibor bering: for(let key in user) sintaksida key ning o'rniga istalgan yaroqli operator ishlatsa bo'ladi, masalan prop yoki data. Muhimi, tushunarli bo'lsin.

Yakun

Obyektlar key:value(kalit so'z: ma'lumot) ko'rinishida ma'lumotlarni saqlaydi.

  • Kalit so'zlar odatda string turiga mansub bo'ladi

  • Ma'lumot qiymati esa istalgan turga mansub

Biror ma'lumotni olish va foydalanish uchun esa:

  • Nuqta belgisi orqali: obj.key

  • Kvadrat qavslar orqali: obj[key]

Qo'shimcha operatorlar:

  • Ma'lumotni o'chirish uchun: delete obj.key

  • Ma'lumot mavjudligini tekshirish: "key" in obj

  • Ma'lumotlar bo'ylab yurish: for(let key in obj)

Esda tuting, JavaScriptda ko'plab obyekt turlari mavjud:

  • Array

  • Date

  • Error

  • String

  • ...va hokazo

❗JavaScript obyektlar juda kuchli va ularning juda ko'p va foydali xususiyatlari bor. Ularni esa keyingi darslarda o'rganib boramiz.

E'tiboringiz uchun rahmat. Sizga foydali bo'ladi degan umiddaman. Sizga maslahatim, pastda "Subscribe to my newsletter" bo'limida email pochtangizni qoldiring va darslarni e'lon qiligandayoq pochtangizga qabul qiling.

Agar darsliklar sizga yoqayotgan bo'lsa, bizni kuzatib borishingiz mumkin: