ความแตกต่างคือ Object.seal() อนุญาตให้เปลี่ยนค่า existing properties ได้ แต่ Object.freeze() ไม่อนุญาตให้เปลี่ยนแปลงอะไรเลย Object.freeze() ทำให้ object immune ต่อการเปลี่ยนแปลงใดๆ
Object.seal()
Object.seal() ป้องกันการลบ existing property แต่ ไม่ป้องกัน การเปลี่ยนค่า existing properties
ตัวอย่าง
<html> <body> <script>
var object1 = { prop1: 1 };
Object.seal(object1);
object1.prop1 = 2; // ค่าเปลี่ยนได้
delete object1.prop1; // ลบไม่ได้
document.write(object1.prop1); // แสดง 2
</script> </body> </html>
ผลลัพธ์
2
Object.freeze()
นอกจากฟังก์ชันของ Object.seal() แล้ว Object.freeze() ยังไม่อนุญาตให้เปลี่ยนค่า existing properties แม้เล็กน้อย
ตัวอย่าง
<html> <body> <script>
var object1 = { prop1: 1 };
Object.freeze(object1);
object1.prop1 = 2; // พยายามเปลี่ยนค่า
delete object1.prop1; // พยายามลบ
document.write(object1.prop1); // ยังคงเป็น 1
</script> </body> </html>
ผลลัพธ์
1