Skip to content

JavaScript Obyektni Himoyalash

JavaScript obyektlarni o'zgartirishlardan (xususiyat qo'shish, o'chirish yoki qiymatlarini o'zgartirish) himoya qilish uchun bir nechta darajadagi xavfsizlik metodlarini taqdim etadi.


Obyektni himoya qilish metodlari

Xavfsizlik metodlari

  • Object.preventExtensions(object) — Yangi xususiyat qo'shishni taqiqlaydi.
  • Object.seal(object) — Xususiyat qo'shish va o'chirishni taqiqlaydi.
  • Object.freeze(object) — Har qanday o'zgarishni taqiqlaydi (faqat o'qish uchun).

"const" kalit so'zidan foydalanish

Obyektni o'zgarishlardan himoya qilishning eng keng tarqalgan usuli — const dan foydalanishdir.

const yordamida obyektning o'zini qayta tayinlab (re-assign) bo'lmaydi, lekin uning xususiyatlarini o'zgartirish, o'chirish yoki yangi xususiyat yaratish mumkin.


Object.preventExtensions()

Object.preventExtensions() metodi obyektga yangi xususiyatlar qo'shishni taqiqlaydi.

Misol

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

// Kengaytirishni taqiqlash
Object.preventExtensions(person)

// Bu xatoga olib keladi (yoki ishlamaydi)
person.nationality = 'English'

Diqqat

preventExtensions() metodi "strict mode" ishlatilmasa xatoni bildirmasdan o'tkazib yuboradi, lekin "strict mode"-da TypeError beradi.


Object.seal() (Muhrlash)

Object.seal() metodi yangi xususiyat qo'shishni VA mavjud xususiyatlarni o'chirishni taqiqlaydi. Lekin mavjud xususiyatlarning qiymatlarini o'zgartirish mumkin (agar ular writable bo'lsa).

Misol

js
'use strict'
const person = { name: 'Ali', age: 25 }

// Obyektni muhrlash
Object.seal(person)

// Bu xato beradi:
delete person.age

// Bu ishlaydi:
person.age = 30

Object.freeze() (Muzlatish)

Object.freeze() metodi obyektni butunlay o'zgarmas holatga keltiradi. Hech qanday xususiyat qo'shib bo'lmaydi, o'chirib bo'lmaydi va mavjud qiymatlarni o'zgartirib bo'lmaydi. Obyekt faqat o'qish uchun bo'lib qoladi.

Misol

js
'use strict'
const person = { name: 'Ali', age: 25 }

// Obyektni muzlatish
Object.freeze(person)

// Bu xato beradi:
person.age = 30

Muzlatilganlik yoki muhrlanganlikni tekshirish

  • Object.isExtensible(obj) — Obyektga yangi xususiyat qo'shish mumkinmi?
  • Object.isSealed(obj) — Obyekt muhrlanganmi?
  • Object.isFrozen(obj) — Obyekt muzlatilganmi?