Skip to content

JavaScript Obyekt Aksessorlari (Get va Set)

Getter-lar va setter-lar sizga obyekt aksessorlarini (Computed Properties — Hisoblanadigan xususiyatlar) aniqlash imkonini beradi.


JavaScript Getter (get kalit so'zi)

Getter xususiyat qiymatini olish (o'qish) uchun funksiyani xususiyat kabi chaqirish imkonini beradi.

Misol

js
const person = {
  firstName: 'John',
  lastName: 'Doe',
  language: 'en',
  get lang() {
    return this.language.toUpperCase()
  }
}

// Getter yordamida ma'lumotni olish:
console.log(person.lang) // "EN" chiqadi

JavaScript Setter (set kalit so'zi)

Setter xususiyatga qiymat berish (yozish) uchun ishlatiladi va berilgan qiymatni qayta ishlash imkonini beradi.

Misol

js
const person = {
  firstName: 'John',
  lastName: 'Doe',
  language: '',
  set lang(lang) {
    this.language = lang.toUpperCase()
  }
}

// Setter orqali qiymat berish:
person.lang = 'uz'

console.log(person.language) // "UZ" chiqadi

Funksiya yoki Getter? Farqi nimada?

Quyidagi ikki misolni solishtiring:

Metod (Funksiya) usuli
js
const person = {
  firstName: 'John',
  fullName: function () {
    return this.firstName + ' ' + this.lastName
  }
}
person.fullName() // Funksiya kabi chaqiriladi ()
Getter usuli
js
const person = {
  firstName: 'John',
  get fullName() {
    return this.firstName + ' ' + this.lastName
  }
}
person.fullName // Xususiyat kabi murojaat qilinadi

Asosiy farq: Getter oddiyroq sintaksis taqdim etadi va obyekt xususiyatiga murojaat qilishni funksiya chaqirishdan ko'ra qulayroq qiladi.


Nima uchun Getter va Setter-dan foydalanish kerak?

  • Sintaksisni soddalashtiradi.
  • Xususiyatlar va metodlar uchun bir xil sintaksisga imkon beradi.
  • Ma'lumotlar sifatini (Data Quality) ta'minlaydi (qiymatni saqlashdan oldin tekshirish yoki o'zgartirish).
  • "Parda ortida" ishlarni bajarish (masalan, log yuritish yoki hisoblashlar) uchun foydali.

Object.defineProperty() yordamida aksessorlarni qo'shish

Mavjud obyektga Object.defineProperty() metodi orqali ham getter va setter-larni qo'shish mumkin.

Hisoblagich (Counter) Misoli

js
const obj = { counter: 0 }

Object.defineProperty(obj, 'reset', {
  get: function () {
    this.counter = 0
  }
})
Object.defineProperty(obj, 'increment', {
  get: function () {
    this.counter++
  }
})
Object.defineProperty(obj, 'add', {
  set: function (value) {
    this.counter += value
  }
})

// Ishlatish:
obj.reset
obj.add = 5
obj.increment
console.log(obj.counter) // 6