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?