--- id: 598f48a36c8c40764b4e52b3 title: Prevent Object Mutation challengeType: 1 forumTopicId: 301207 --- ## Description
As seen in the previous challenge, const declaration alone doesn't really protect your data from mutation. To ensure your data doesn't change, JavaScript provides a function Object.freeze to prevent data mutation. Once the object is frozen, you can no longer add, update, or delete properties from it. Any attempt at changing the object will be rejected without an error. ```js let obj = { name:"FreeCodeCamp", review:"Awesome" }; Object.freeze(obj); obj.review = "bad"; // will be ignored. Mutation not allowed obj.newProp = "Test"; // will be ignored. Mutation not allowed console.log(obj); // { name: "FreeCodeCamp", review:"Awesome"} ```
## Instructions
In this challenge you are going to use Object.freeze to prevent mathematical constants from changing. You need to freeze the MATH_CONSTANTS object so that no one is able to alter the value of PI, add, or delete properties.
## Tests
```yml tests: - text: Do not replace const keyword. testString: getUserInput => assert(getUserInput('index').match(/const/g)); - text: MATH_CONSTANTS should be a constant variable (by using const). testString: getUserInput => assert(getUserInput('index').match(/const\s+MATH_CONSTANTS/g)); - text: Do not change original MATH_CONSTANTS. testString: getUserInput => assert(getUserInput('index').match(/const\s+MATH_CONSTANTS\s+=\s+{\s+PI:\s+3.14\s+};/g)); - text: PI equals 3.14. testString: assert(PI === 3.14); ```
## Challenge Seed
```js function freezeObj() { 'use strict'; const MATH_CONSTANTS = { PI: 3.14 }; // change code below this line // change code above this line try { MATH_CONSTANTS.PI = 99; } catch(ex) { console.log(ex); } return MATH_CONSTANTS.PI; } const PI = freezeObj(); ```
## Solution
```js function freezeObj() { 'use strict'; const MATH_CONSTANTS = { PI: 3.14 }; // change code below this line Object.freeze(MATH_CONSTANTS); // change code above this line try { MATH_CONSTANTS.PI = 99; } catch(ex) { console.log(ex); } return MATH_CONSTANTS.PI; } const PI = freezeObj(); ```