2018-10-12 15:37:13 -04:00
|
|
|
---
|
|
|
|
title: Prevent Object Mutation
|
|
|
|
---
|
|
|
|
|
2019-07-24 00:59:27 -07:00
|
|
|
# Prevent Object Mutation
|
2018-10-12 15:37:13 -04:00
|
|
|
|
|
|
|
|
2019-07-24 00:59:27 -07:00
|
|
|
---
|
|
|
|
## Hints
|
|
|
|
|
|
|
|
### Hint 1
|
2018-10-12 15:37:13 -04:00
|
|
|
|
2019-03-10 19:07:48 +01:00
|
|
|
* _Use `Object.freeze()` to prevent mathematical constants from changing._
|
2018-10-12 15:37:13 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
2019-07-24 00:59:27 -07:00
|
|
|
---
|
|
|
|
## Solutions
|
2018-10-12 15:37:13 -04:00
|
|
|
|
2019-07-24 00:59:27 -07:00
|
|
|
<details><summary>Solution 1 (Click to Show/Hide)</summary>
|
2018-10-12 15:37:13 -04:00
|
|
|
|
|
|
|
```javascript
|
2019-07-24 00:59:27 -07:00
|
|
|
function freezeObj() {
|
|
|
|
"use strict";
|
|
|
|
const MATH_CONSTANTS = {
|
|
|
|
PI: 3.14
|
|
|
|
};
|
|
|
|
|
|
|
|
Object.freeze(MATH_CONSTANTS);
|
|
|
|
|
|
|
|
try {
|
|
|
|
MATH_CONSTANTS.PI = 99;
|
|
|
|
} catch (ex) {
|
|
|
|
console.log(ex);
|
|
|
|
}
|
|
|
|
return MATH_CONSTANTS.PI;
|
|
|
|
}
|
|
|
|
|
|
|
|
const PI = freezeObj();
|
2018-10-12 15:37:13 -04:00
|
|
|
```
|
2019-07-24 00:59:27 -07:00
|
|
|
#### Code Explanation
|
2018-10-12 15:37:13 -04:00
|
|
|
|
2019-07-24 00:59:27 -07:00
|
|
|
* By using Object.freeze() on `MATH_CONSTANTS` we can avoid manipulating it.
|
2018-10-12 15:37:13 -04:00
|
|
|
|
2019-07-24 00:59:27 -07:00
|
|
|
#### Relevant Links
|
2019-03-10 19:07:48 +01:00
|
|
|
- ["Object.freeze()" - *MDN Javascript reference*](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)
|
2019-07-24 00:59:27 -07:00
|
|
|
</details>
|
2019-03-27 09:55:49 -07:00
|
|
|
|