В последнее время я пришел к выводу, что мне нужно улучшить мою вселенную объектов 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!