Object.freeze() और const के बीच अंतर यह है कि पूर्व म्यूटेबिलिटी को रोकता है जबकि बाद वाला म्यूटेबिलिटी को नहीं रोकता। बेहतर समझ के लिए आइए उन्हें व्यक्तिगत रूप से चर्चा करें।
Const
Const का व्यवहार let के समान है। एक बार किसी वेरिएबल को const का उपयोग करके परिभाषित करने के बाद इसे रीअसाइन नहीं किया जा सकता। Const द्वारा घोषित वेरिएबल्स ब्लॉक स्कोप्ड होते हैं न कि फंक्शन स्कोप्ड जैसा कि var द्वारा परिभाषित किया गया है।
const कीवर्ड की मुख्य कमी यह है कि यह ऑब्जेक्ट को म्यूटेबिलिटी से नहीं रोकता। ऑब्जेक्ट की प्रॉपर्टीज को बदला जा सकता है भले ही वह ऑब्जेक्ट const का उपयोग करके परिभाषित किया गया हो। इसे म्यूटेबिलिटी कहा जाता है। एक सामान्यीकरण है कि const का उपयोग करके असाइन किया गया कोई भी वेरिएबल पुनः असाइन नहीं किया जा सकता। लेकिन जब कोई ऑब्जेक्ट const का उपयोग करके परिभाषित किया जाता है, तो उसकी प्रॉपर्टीज बदली जा सकती हैं। उस परिदृश्य में म्यूटेबिलिटी को रोकने के लिए const से बचना बेहतर है।
उदाहरण
निम्नलिखित उदाहरण में प्रारंभ में प्रॉपर्टी 'country' का मान "India" है। लेकिन बाद में मान को England में बदल दिया जाता है भले ही वेरिएबल const का उपयोग करके असाइन किया गया हो।
<html> <body> <script> const person = { "name" : "Suresh", "Country" : "India", "Designation" : "Mayor" } person.Country = "England" document.write(person.Country); </script> </body> </html>
आउटपुट
England
Object.freeze()
यह मेथड इम्युटेबिलिटी प्रदान करता है। एक बार कोई ऑब्जेक्ट फ्रीज हो जाने पर, उसकी प्रॉपर्टीज नहीं बदली जा सकतीं।
निम्नलिखित में भले ही प्रॉपर्टी "country" का मान "India" से "England" में बदल दिया गया हो, इम्युटेबिलिटी के कारण मान "India" अपना स्थान बरकरार रखता है।
उदाहरण
<html> <body> <script> const person = { "name" : "Suresh", "Country" : "India", "Designation" : "Mayor" } Object.freeze(person); person.Country = "England" document.write(person.Country); </script> </body> </html>
आउटपुट
India