Skip to content

JavaScript Obyektlarni Boshqarish ​

JavaScript obyekt xususiyatlarini (property) batafsil boshqarish, ularning metama'lumotlarini o'zgartirish va xavfsizligini ta'minlash uchun maxsus metodlarni taqdim etadi.


Xususiyatlarni boshqarish metodlari ​

Asosiy metodlar

  • Object.defineProperty(object, property, descriptor) — Obyekt xususiyatini qo'shish yoki o'zgartirish.
  • Object.defineProperties(object, descriptors) — Bir nechta xususiyatlarni qo'shish yoki o'zgartirish.
  • Object.getOwnPropertyDescriptor(object, property) — Bitta xususiyat deskriptorini olish.
  • Object.getOwnPropertyDescriptors(object) — Barcha xususiyat deskriptorlarini olish.
  • Object.getOwnPropertyNames(object) — Barcha xususiyat nomlarini massiv sifatida qaytaradi.
  • Object.getPrototypeOf(object) — Obyekt prototipini olish. :::

Object.defineProperty() ​

Object.defineProperty() metodi yordamida quyidagilarni bajarish mumkin:

  • Obyektga yangi xususiyat qo'shish.
  • Xususiyat qiymatini o'zgartirish.
  • Xususiyat metama'lumotlarini (atributlarini) o'zgartirish.
  • Getter va setter-larni boshqarish.

Misol: Yangi xususiyat qo'shish ​

js
const person = { firstName: 'John', lastName: 'Doe' }

// "year" nomli yangi xususiyat qo'shish
Object.defineProperty(person, 'year', { value: '2024' })

Xususiyat atributlari (Property Attributes) ​

Har bir xususiyat nafaqat qiymatga, balki uning xulq-atvorini belgilaydigan maxfiy atributlarga ham ega:

  • writable : true bo'lsa, qiymatni o'zgartirsa bo'ladi.
  • enumerable : true bo'lsa, xususiyatni tsikllarda (for...in) ko'rish mumkin.
  • configurable : true bo'lsa, xususiyatni o'chirish yoki atributlarini qayta sozlash mumkin.

Misol: Xususiyatni "faqat o'qish" (Read-only) qilish ​

js
Object.defineProperty(person, 'language', { writable: false })

Misol: Xususiyatni tsikllardan yashirish ​

js
Object.defineProperty(person, 'language', { enumerable: false })

Object.getOwnPropertyNames() ​

Object.getOwnPropertyNames() metodi obyektning barcha xususiyatlarini (hatto ular sanalmaydigan — non-enumerable bo'lsa ham) ro'yxat ko'rinishida qaytaradi.

Misol ​

js
const person = { firstName: 'Ali', lastName: 'Valiyev' }
Object.defineProperty(person, 'id', { value: 1, enumerable: false })

// Barcha xususiyatlarni olish
Object.getOwnPropertyNames(person) // ["firstName", "lastName", "id"]

Farqi nimada?

  • Object.keys() metodi faqat sanaladigan (enumerable) xususiyatlarni qaytaradi.
  • Object.getOwnPropertyNames() esa barcha xususiyatlarni (hatto yashirilganlarini ham) qaytaradi. :::

Prototip xususiyatlari ​

JavaScript obyektlari o'z prototipining xususiyatlarini meros qilib oladi. delete kalit so'zi meros qilib olingan xususiyatlarni o'chirmaydi, lekin agar siz prototipning o'zidan xususiyatni o'chirsangiz, bu o'sha prototipdan foydalanadigan barcha obyektlarga ta'sir qiladi.