Object.freeze() method สามารถทำให้วัตถุ เปลี่ยนแปลงไม่ได้ แต่ในกรณีของ วัตถุซ้อน ไม่สามารถป้องกัน การกลายพันธุ์ . Object.freeze() ทำได้เพียง ไม่เปลี่ยนรูป ไปยังวัตถุหลักภายนอก มันไม่สามารถเข้าถึงวัตถุลูกภายใน (ซ้อน) ได้
ตัวอย่าง
ในตัวอย่างต่อไปนี้ ไม่มีอ็อบเจ็กต์ที่ซ้อนกัน 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() ไม่สามารถเข้าถึงวัตถุที่ซ้อนกัน
ตัวอย่าง
ในตัวอย่างต่อไปนี้ แม้ว่าวัตถุจะ แช่แข็ง โดย 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