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

อะไรคือความแตกต่างระหว่าง Object.seal () และ Object.freeze () ใน JavaScript?


ความแตกต่างระหว่าง Object.seal() และ Object.freeze() คืออดีตสามารถอนุญาตให้เปลี่ยนแปลงคุณสมบัติที่มีอยู่ของวัตถุในขณะที่หลังจะไม่อนุญาตให้เปลี่ยนแปลงใด ๆ กับวัตถุ Object.freeze() ทำให้วัตถุ ภูมิคุ้มกัน เป็นอะไรก็ได้ แม้แต่การเปลี่ยนแปลงนาทีก็เปลี่ยนไม่ได้

Object.seal()

Object.seal() เมธอดขัดขวางการลบคุณสมบัติที่มีอยู่แต่ไม่สามารถป้องกันคุณสมบัติที่มีอยู่จากการเปลี่ยนแปลงภายนอกได้

ตัวอย่าง

ในตัวอย่างต่อไปนี้ เนื่องจาก Object.seal() วิธีที่ผู้ใช้กำหนดคุณสมบัติ "prop1" จะไม่ถูกลบแม้จะใช้วิธีลบในขณะที่อัปเดตเฉพาะค่าของคุณสมบัติ "prop1"

<html>
<body>
<script>
   var object1 = {
      prop1: 1
   };
   Object.seal(object1);
   object1.prop1 = 2; // value got changed
   delete object1.prop1;
   document.write(object1.prop1); // it gives value as 2 because of seal.
</script>
</body>
</html>

ผลลัพธ์

2


Object.freeze()

นอกเหนือจากฟังก์ชันของ Object.seal() , Object.freeze() เมธอดจะไม่ยอมให้เปลี่ยนแปลงคุณสมบัติที่มีอยู่ของอ็อบเจกต์เป็นนาที

ตัวอย่าง

<html>
<body>
<script>
   var object1 = {
      prop1: 1
   };
   Object.freeze(object1);
   object1.prop1 = 2; // value got updated
   delete object1.prop1; // value got deleted
   document.write(object1.prop1); // it gives 1 as output despite value updated to 2
</script>
</body>
</html>

ผลลัพธ์

1