Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

เป็นไปได้ไหมที่จะทำให้วัตถุที่ซ้อนกันไม่เปลี่ยนรูปโดยใช้ Object.freeze() ใน JavaScript?


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