April 28, 2023

Objects 

  1. Object nima - object bu key va value dan tashkil topgan ma'lumot turi hisoblanadi
  2. Object sintaksisi
let obj={key: "value"} //shu tarzda object yoziladi 
let obj= {name: "Jamshidbek"}

//keyning yozilish turlari
let obj={name: "Jamshidbek"}
let obj={full_name: "Jamshidbek"} //pastki chiziq
let obj={"full name": "Jamshidbek"} // String ichida
let obj={fullName: "Jamshidbek"} // camelcase 

let title = "name";  // o'zgaruvchi orqali
let obj={[title]: "Jamshidbek"}; // key = "name" title emas

3.Objectni chiqarish yo'llari

alert("Hello"); 
alert(["Hello"]);
alert(12345); // bu data typelarda kod ishlaydi 
let obj1={name: "Jamshidbek"};
alert(obj1); // bu xolatda biz objectni chiqara olmaymiz
let obj1={name: "Jamshidbek"};
alert(obj1.name);
alert(obj1["name"]);

Agar objectda ikkita bir xil key kelib qolsa doim oxirgisi olinadi va birinchisini ignore qivoradi.

let obj={name: "Jamshidbek", surname: "Rasulov", name: "Bekzodbek"}
console.log(obj); 

//delete object
let obj={name: "Jamshidbek", surname: "Rasulov"}
delete obj.name;
console.log(obj) // surname: "Rasulov" 

//change object value
let obj={name: "Jamshidbek", surname: "Rasulov"}
obj.name="Bekzodbek";
console.log(obj); 

// add new key and value 
let obj= {name: "Jamshidbek", surname: "Rasulov"}
obj.age=19;
console.log(obj); //bu objectga age ham qo'shildi

//Object.freeze() objectni muzlatadi.
let obj= {name: "Jamshidbek", surname: "Rasulov"}
Object.freeze();
obj.name="Bekzodbek"; //ignored
obj.age=19;         //ignored

//Object.seal() faqatgina bor ma'lumotni yangilasa bo'ladi
let obj= {name: "Jamshidbek", surname: "Rasulov"}
obj.name="Jamshidbek";

4.Refernce and copy

  let obj1 ={name: "Jamshidbek"};
  let obj2 ={surname: "Rasulov"};
  let obj3=obj1 // bu yerda obj3 ni obj1 ga tengladik yani obj1 ning 
  // linki to'liq obj3 ga tenglandi agar obj1 da qandaydir o'zgarish bo'lsa
  // obj3 ga ham tasir qiladi 
  obj1.name = "Bekzodbek";
  console.log(obj3);
  

5.structuredClone - bu objectni copy qilganda uning linki emas faqat ichidagi elementlarini o'zgartirib beradi, ya'ni keyinchalik objectni o'zgartirsangiz u ozgarmay qoladi.

let obj1 ={name: "Jamshidbek"};
let obj2 ={surname: "Rasulov"};
let obj3=structuredClone(obj1); //copy bo'ldi lekin faqatgina elementlari
// copy  bo'ldi
obj1.name = "Bekzodbek";
console.log(obj3);

6.Object assign- ikkita objectni bir biriga qo'shib beradi.

let obj1 ={name: "Jamshidbek"};
let obj2 ={surname: "Rasulov"};
Object.assign(obj1, obj2); // objectni qiymati obj1 va obj2 ning
// qo'shmasiga teng 

7.This va garbage collection

let obj={
   name: "Jamshidbek";
   surname: "Rasulov";
   getData(){
     return obj.name+obj.surname; // this metodini ishlatsak bo'ladi
     }
   }
   console.log(obj.getData());

let obj={
   name: "Jamshidbek";
   surname: "Rasulov";
   getData(){
     return this.name+this.surname; // obj ishlatsak error beradi
     }
   }
   let user= obj;
   obj=null; // bu objectni malumotlari yoq bolib ketishi garbage boladi
   console.log(user.getData());
   
let func = obj.getData;
console.log(func) // bu qism hatolik beradi agar this orniga obj ishlatsak 
// hato chiqmaydi

let func = obj.title;
console.log(func); //  bu kod xatolik bermaydi

primitive - heap da saqlanadi,
non-primitive - o'zi stackda joylashadi, valuesi heapda joylashadi
Garbage collection- non-primitive malumot turlari primitive ga o'zgarsa
stackdagi malumoti garbage collectionga tushadi.

8.Object keys and Objects values

let obj={
   name: "Jamshidbek";
   surname: "Rasulov";
   }
   console.log(Object.keys(obj)); keylarini chiqarib beradi
   console.log(Object.values(obj)); valuelarini chiqarib beradi
   console.log(Object.entries(obj)); hammasini chiqaradi
   

9.optional chaining

let obj={
   name: "Jamshidbek";
   surname: "Rasulov";
   data: {age: 19};
 }
 console.log(obj.data.age);// bu xolatda togri chiqaradi
 
//optioanl
let obj={
   name: "Jamshidbek";
   surname: "Rasulov";
   data: {age: 19};
 }
 obj.data=null;
 console.log(obj.data.age); // bunda esa data malumoti null bolib 
 //qolgani uchun xato chiqadi;
 console.log(obj.data?.age); // bu xolatda agar data malumoti bo'lsa 
 //chiqarib  beradi aks xolda undefined;