Предотвращение мутации объектов
Как видно из предыдущей задачи, одно только объявление const
не защищает ваши данные от мутации. Чтобы ваши данные не менялись, JavaScript предоставляет функцию Object.freeze
для предотвращения мутации данных. После того, как объект будет заморожен, вы больше не сможете добавлять, обновлять или удалять из него свойства. Любая попытка изменить объект будет отклонена без ошибок.
let obj = {
name:"FreeCodeCamp",
review:"Awesome"
};
Object.freeze(obj);
obj.review = "bad";
obj.newProp = "Test";
console.log(obj);
Важное замечание: Помните, что массивы тоже есть суть - объекты. Следовательно, их так же можно "замораживать".
let arr = [1,2,3];
Object.freeze(arr);
arr.push(4) // Uncaught TypeError: Cannot add property 3, object is not extensible
/*
Здесь при попытке вставить новый элемент
массива мы получаем ошибку.
А вот при попытке изменить элемент массива через
его индекс, ошибку мы не получим.
При этом сам массив все равно не изменится
*/
arr[0] = 777;
console.log(arr); // [1, 2, 3]
В этой задаче вам необходимо использовать метод Object.freeze
для предотвращения изменения математических констант. Вам необходимо заморозить объект MATH_CONSTANTS
чтобы никто не мог изменять значение свойств PI
, добавлять или удалять.