Computer >> Máy Tính >  >> Lập trình >> Javascript

Sự khác biệt giữa Object.seal () và Object.freeze () trong JavaScript là gì?

Sự khác biệt giữa Object.seal () Object.freeze () là cái trước có thể cho phép thay đổi các thuộc tính hiện có của một đối tượng trong khi cái sau sẽ không cho phép bất kỳ thay đổi nào đối với đối tượng. Object.freeze () làm cho một đối tượng miễn dịch đối với bất kỳ điều gì, không thể thay đổi ngay cả các thay đổi nhỏ.

Object.seal ()

Object.seal () phương pháp ngăn chặn việc xóa một thuộc tính hiện có nhưng nó không thể bảo vệ các thuộc tính hiện có khỏi những thay đổi bên ngoài.

Ví dụ

Trong ví dụ sau, vì Object.seal () phương thức mà thuộc tính người dùng xác định "prop1" không bị xóa mặc dù phương pháp xóa được áp dụng trong khi chỉ có giá trị của thuộc tính "prop1" được cập nhật.

<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>

Đầu ra

2


Object.freeze ()

Ngoài các chức năng của Object.seal () , Object.freeze () phương thức thậm chí sẽ không cho phép các thay đổi nhỏ đối với các thuộc tính hiện có của một đối tượng.

Ví dụ

<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>

Đầu ra

1