Table of contents
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:
Birinchisi
name
kalit so'zi bilan"To'raqul"
Keyingisi esa
age
kalit so'zi bilan18
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
};
" , "
bilan ajratiladiKvadrat 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
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
}
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'ladiMa'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: