Sự khác biệt giữa Object.freeze () và const đó có phải là điều trước đây ngăn chặn khả năng thay đổi trong khi cái thứ hai không ngăn cản khả năng biến đổi. Để hiểu rõ hơn, hãy 'thảo luận riêng về chúng.
Const
Const hành vi giống như hành vi của let . Sau khi bất kỳ biến nào được xác định bằng cách sử dụng const nó không thể được chỉ định lại . Các biến được khai báo bởi Const có phạm vi khối và không phạm vi chức năng như được định nghĩa bởi var .
Hạn chế chính với const từ khóa là nó không ngăn đối tượng khỏi khả năng thay đổi . Các thuộc tính của đối tượng có thể được thay đổi ngay cả khi đối tượng đó được xác định bằng cách sử dụng const . Đây được gọi là khả năng thay đổi . Có một sự tổng quát rằng bất kỳ biến nào được gán bằng const đều không thể được gán lại. Nhưng khi một đối tượng được xác định bằng const , các thuộc tính của nó có thể được thay đổi. Trong trường hợp đó, tốt hơn là nên tránh const để ngăn chặn khả năng thay đổi .
Ví dụ
Trong ví dụ sau, ban đầu giá trị của tài sản 'quốc gia' là "Ấn Độ". Nhưng sau đó, giá trị được thay đổi thành England mặc dù biến được gán bằng cách sử dụng const.
<html> <body> <script> const person = { "name" : "Suresh", "Country" : "India", "Designation" : "Mayor" } person.Country = "England" document.write(person.Country); </script> </body> </html>
Đầu ra
England
Object.freeze ()
Phương pháp này cung cấp tính bất biến . Sau khi bất kỳ đối tượng nào được đóng băng , thuộc tính của nó không thể thay đổi.
Trong phần sau, mặc dù giá trị của tài sản "quốc gia" được thay đổi từ "Ấn Độ" thành "Anh", vì tính bất biến giá trị "Ấn Độ" vẫn giữ được vị trí của nó.
Ví dụ
<html> <body> <script> const person = { "name" : "Suresh", "Country" : "India", "Designation" : "Mayor" } Object.freeze(person); person.Country = "England" document.write(person.Country); </script> </body> </html>
Đầu ra
India