ความแตกต่างระหว่าง 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