ความแตกต่างระหว่าง Object.freeze() และ const คืออดีตจะป้องกัน การกลายพันธุ์ ในขณะที่หลังไม่ได้ป้องกันการกลายพันธุ์ เพื่อความเข้าใจที่ดีขึ้น มาคุยกันทีละคน
Const
Const พฤติกรรมเหมือนกับ ให้ . เมื่อตัวแปรใด ๆ ถูกกำหนดโดยใช้ const ไม่สามารถมอบหมายใหม่ . ตัวแปรประกาศโดย Const ถูกจำกัดขอบเขต และไม่ได้กำหนดขอบเขตฟังก์ชัน ตามที่กำหนดโดย var .
ข้อเสียเปรียบหลักกับ const คำสำคัญคือมันไม่ได้ป้องกันวัตถุจากการเปลี่ยนแปลง . คุณสมบัติของวัตถุสามารถเปลี่ยนแปลงได้แม้ว่าวัตถุนั้นจะถูกกำหนดโดยใช้ const . สิ่งนี้เรียกว่าการเปลี่ยนแปลง . มีการวางนัยทั่วไปว่าตัวแปรใด ๆ ที่กำหนดโดยใช้ const ไม่สามารถกำหนดใหม่ได้อีก แต่เมื่อกำหนดวัตถุโดยใช้ const , คุณสมบัติของมันสามารถเปลี่ยนแปลงได้ ในสถานการณ์นั้น เป็นการดีกว่าที่จะหลีกเลี่ยง const เพื่อป้องกัน การกลายพันธุ์ .
ตัวอย่าง
ในตัวอย่างต่อไปนี้ในขั้นต้น มูลค่าของทรัพย์สิน 'ประเทศ' คือ "อินเดีย" แต่ต่อมาค่าจะเปลี่ยนเป็น England แม้ว่าตัวแปรจะถูกกำหนดโดยใช้ const
<html> <body> <script> const person = { "name" : "Suresh", "Country" : "India", "Designation" : "Mayor" } person.Country = "England" document.write(person.Country); </script> </body> </html>
ผลลัพธ์
England
Object.freeze()
วิธีนี้ทำให้ไม่สามารถเปลี่ยนแปลงได้ . เมื่อวัตถุใดๆ แช่แข็ง คุณสมบัติของมันไม่สามารถเปลี่ยนแปลงได้
ต่อไปนี้แม้มูลค่าทรัพย์สิน "ประเทศ" จะเปลี่ยนจาก "อินเดีย" เป็น "อังกฤษ" เนื่องจาก ไม่เปลี่ยนรูป คุณค่าของ "อินเดีย" ยังคงอยู่
ตัวอย่าง
<html> <body> <script> const person = { "name" : "Suresh", "Country" : "India", "Designation" : "Mayor" } Object.freeze(person); person.Country = "England" document.write(person.Country); </script> </body> </html>
ผลลัพธ์
India