Object.freeze() विधि किसी वस्तु को अपरिवर्तनीय बना सकती है लेकिन नेस्टेड ऑब्जेक्ट . के मामले में , यह परिवर्तनशीलता . को नहीं रोक सकता . ऑब्जेक्ट फ्रीज () केवल अपरिवर्तनीयता . प्रदान कर सकता है बाहरी मूल वस्तु के लिए, यह किसी भी आंतरिक बच्चे (नेस्टेड) वस्तुओं तक नहीं पहुंच सकता है।
उदाहरण
निम्नलिखित उदाहरण में, कोई नेस्टेड ऑब्जेक्ट नहीं हैं। ऑब्जेक्ट.फ्रीज () विधि फ्रीज . करने का प्रयास करेगी पूरी वस्तु। इसलिए वस्तु को जमने के बाद भी गुण "नाम" में कोई परिवर्तन नहीं होता है।
<html> <body> <script> const person = { "name" : "Suresh", "Country" : "India", "Designation" : "Mayor" } document.write("Before freeze the name is" +" "+ person.name ); document.write("</br>"); Object.freeze(person); person.name = "John"; document.write("After freeze the name is" +" "+ person.name); </script> </body> </html>
आउटपुट
Before freeze the name is Suresh After freeze the name is Suresh
जब किसी नेस्टेड वस्तु को जमे हुए . करने का प्रयास किया जाता है ऑब्जेक्ट.फ्रीज () . द्वारा परिणाम व्यर्थ है क्योंकि Object.freeze() नेस्टेड वस्तुओं तक नहीं पहुंच सकता।
उदाहरण
निम्नलिखित उदाहरण में, भले ही वस्तु जमे हुए . है द्वारा Object.freeze() विधि नेस्टेड ऑब्जेक्ट की संपत्ति बदल जाती है।
<html> <body> <script> const person = { "name" : "Suresh", "Country" : "India", "Designation" : "Mayor", "CompaniesOwned" :{ "Company1" : "Tesla", "Company2" : "SolarCity", "Company3" : "Spacex" } } document.write("Before freeze " + " " + "Company2 is" + " "+ person.CompaniesOwned.Company2); Object.freeze(person); document.write("</br>"); person.CompaniesOwned.Company2 = "Neuralica"; document.write("After freeze" + " " + "Company2 is" + " "+ person.CompaniesOwned.Company2); </script> </body> </html>
आउटपुट
Before freeze Company2 is SolarCity After freeze Company2 is Neuralica