Object.freeze () phương thức có thể làm cho một đối tượng không thể thay đổi nhưng trong trường hợp đối tượng lồng nhau , nó không thể ngăn chặn khả năng thay đổi . Object.freeze () chỉ có thể cung cấp tính bất biến đối với đối tượng mẹ bên ngoài, nó không thể truy cập bất kỳ đối tượng con bên trong (lồng nhau) nào.
Ví dụ
Trong ví dụ sau, không có đối tượng nào được lồng vào nhau. Object.freeze () phương pháp sẽ cố gắng đóng băng toàn bộ đối tượng. Do đó, không có sự thay đổi trong thuộc tính "name" ngay cả sau khi đóng băng đối tượng.
<html> <body> <script> const person = { "name" : "Suresh", "Country" : "India", "Designation" : "Mayor" } document.write("Before freeze the name is" +" "+ person.name ); document.write("</br>"); Object.freeze(person); person.name = "John"; document.write("After freeze the name is" +" "+ person.name); </script> </body> </html>
Đầu ra
Before freeze the name is Suresh After freeze the name is Suresh
Khi một đối tượng lồng nhau được cố gắng đóng băng bởi Object.freeze () kết quả là vô ích vì Object.freeze () không thể truy cập các đối tượng lồng nhau.
Ví dụ
Trong ví dụ sau, mặc dù đối tượng được đóng băng bởi Object.freeze () phương thức thuộc tính của một đối tượng lồng nhau được thay đổi.
<html> <body> <script> const person = { "name" : "Suresh", "Country" : "India", "Designation" : "Mayor", "CompaniesOwned" :{ "Company1" : "Tesla", "Company2" : "SolarCity", "Company3" : "Spacex" } } document.write("Before freeze " + " " + "Company2 is" + " "+ person.CompaniesOwned.Company2); Object.freeze(person); document.write("</br>"); person.CompaniesOwned.Company2 = "Neuralica"; document.write("After freeze" + " " + "Company2 is" + " "+ person.CompaniesOwned.Company2); </script> </body> </html>
Đầu ra
Before freeze Company2 is SolarCity After freeze Company2 is Neuralica