Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> JavaScript

JavaScript में ऑब्जेक्ट वेरिएबल्स को बदलने से कैसे रोकें?

Object.freeze() से ऑब्जेक्ट को इम्यूटेबल बनाएं - नई प्रॉपर्टी नहीं जोड़ सकते, मौजूदा नहीं बदल सकते, नहीं हटा सकते।

बुनियादी उपयोग

const obj = { value1: 10, value2: 20 };

// फ्रीज करें
Object.freeze(obj);

// बदलने का प्रयास
obj.value1 = 100;        // साइलेंटली फेल (सख्त मोड में एरर)
obj.newProp = "test";    // नहीं जुड़ेगा
delete obj.value2;       // नहीं हटेगा

console.log(obj.value1); // 10 (अपरिवर्तित!)
console.log(obj);        // { value1: 10, value2: 20 }

सख्त मोड में एरर

'use strict';

const frozen = Object.freeze({ x: 1 });
frozen.x = 2; // TypeError: Cannot assign to read only property 'x'

शैलो फ्रीज (नेस्टेड ऑब्जेक्ट्स अभी बदल सकते हैं)

const obj = {
    name: "John",
    address: { city: "NYC" }
};

Object.freeze(obj);

obj.name = "Jane";           // ❌ फेल
obj.address.city = "LA";     // ✅ काम करता है! (नेस्टेड ऑब्जेक्ट फ्रीज नहीं)

console.log(obj.address.city); // "LA"

डीप फ्रीज फंक्शन

function deepFreeze(obj) {
    // प्रिमिटिव या पहले से फ्रीज
    if (obj === null || typeof obj !== 'object') return obj;
    if (Object.isFrozen(obj)) return obj;
    
    // सभी प्रॉपर्टीज रिकर्सिवली फ्रीज
    for (const key of Object.keys(obj)) {
        deepFreeze(obj[key]);
    }
    
    return Object.freeze(obj);
}

const deep = { a: 1, b: { c: 2 } };
deepFreeze(deep);

deep.b.c = 3; // TypeError सख्त मोड में, साइलेंट फेल अन्यथा

संबंधित मेथड्स

मेथडप्रभावफ्रीज?
Object.freeze()न जोड़/बदल/हटा सकते✅ पूर्ण
Object.seal()बदल सकते, न जोड़/हटा सकतेआंशिक
Object.preventExtensions()न जोड़ सकते, बदल/हटा सकतेन्यूनतम
Object.isFrozen()जांचेंबूलियन
Object.isSealed()जांचेंबूलियन
Object.isExtensible()जांचेंबूलियन

चलाने का तरीका

node freeze-object.js

आउटपुट

After changing the field value1 from 10 to 100 =10

उपयोग के मामले

  • कॉन्स्टेंट कॉन्फिगरेशन ऑब्जेक्ट्स
  • रेडक्स-स्टाइल स्टेट (इम्यूटेबिलिटी)
  • लाइब्रेरी एक्सपोर्ट्स सुरक्षित करना
  • रनटाइम बग्स रोकना
  1. स्ट्रिंग को जावास्क्रिप्ट ऑब्जेक्ट में कैसे बदलें? स्ट्रिंग को जावास्क्रिप्ट ऑब्जेक्ट में कैसे बदलें?

    स्ट्रिंग को जावास्क्रिप्ट ऑब्जेक्ट में बदलने का कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1.0 /> <title>Document</title> <style>    

  1. जावास्क्रिप्ट में इम्पोर्टेड ऑब्जेक्ट को डीस्ट्रक्चर कैसे करें? जावास्क्रिप्ट में इम्पोर्टेड ऑब्जेक्ट को डीस्ट्रक्चर कैसे करें?

    जावास्क्रिप्ट में इम्पोर्टेड ऑब्जेक्ट को डीस्ट्रक्चर करने के लिए निम्नलिखित कोड है: उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />

  1. जावास्क्रिप्ट में मौजूदा ऑब्जेक्ट में प्रॉपर्टीज और मेथड्स कैसे जोड़ें? जावास्क्रिप्ट में मौजूदा ऑब्जेक्ट में प्रॉपर्टीज और मेथड्स कैसे जोड़ें?

    जावास्क्रिप्ट में मौजूदा ऑब्जेक्ट में प्रॉपर्टीज और मेथड्स जोड़ने के लिए निम्नलिखित कोड है: उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"