В последнее время я пришел к выводу, что мне нужно улучшить мою вселенную объектов JavaScript. И, как обычно, всякий раз, когда я осознаю такую ​​потребность, я отправляюсь в поисках статей и практических примеров в Интернете, чтобы восполнить пробелы в знаниях и навыках (это то, что мне больше всего нравится в работе разработчика - количество ресурсов для становиться все лучше и лучше). Погружаясь в огромный мир объектов, я наткнулся на довольно увлекательный метод: Object.freeze ()

Этот метод должен вызываться для объекта (очевидно) и защитит свойства объекта от изменения. Я поясню, как это выглядит, на простом примере:

// Create a new object
const customer = {
   customerId: 1,
   name: "Customer",
   password: "*********"
};
// Assign the frozen object to a variable
const client = Object.freeze(customer);
// Try to modify the properties
client.password = "newpassword";
client.location = "London";
// See the results
console.log(client) 
=> { customerId: 1, name: "Customer", password: "*********" }

Ждать? Что случилось с новым паролем и местоположением, которые мы установили? Ничего, кроме потраченного впустую времени;)
Поскольку мы заморозили объект перед попыткой доступа к нему и управления им, мы не можем редактировать или добавлять какие-либо свойства.

Но ... что, если мы хотим иметь возможность изменять некоторые значения? Не бойтесь, есть другой метод, который позволит нам сделать это: Object.seal ()

// Create a new object
const customer = {
   customerId: 1,
   name: "Customer",
   password: "*********"
};
// Assign the sealed object to a variable
const client = Object.seal(customer);
// Try to modify the properties
client.password = "newpassword";
client.location = "London";
// See the results
console.log(client) 
=> { customerId: 1, name: "Customer", password: "newpassword" }

Этот метод дает нам возможность изменять существующее свойство, однако он по-прежнему не позволяет нам (или кому-либо еще) добавить новое свойство к объекту. Отлично!

Не позволяйте посторонним редактировать ваши объекты! :)

P.S. На вложенных объектах методы не работают!

Надеюсь, вам понравился технический совет №4!