64 lines
3.0 KiB
Markdown
64 lines
3.0 KiB
Markdown
![]() |
---
|
|||
|
title: Prevent Object Mutation
|
|||
|
localeTitle: 防止对象突变
|
|||
|
---
|
|||
|

|
|||
|
|
|||
|
如果卡住,请记得使用**`Read-Search-Ask`** 。尝试配对程序并编写自己的代码
|
|||
|
|
|||
|
### 问题说明:
|
|||
|
|
|||
|
我们需要防止`MATH_CONSTANTS`值发生变化。
|
|||
|
|
|||
|
## 提示:1
|
|||
|
|
|||
|
* 使用Object.freeze(obj)来防止对象被更改。
|
|||
|
|
|||
|
> _现在尝试解决问题_
|
|||
|
|
|||
|
## 扰流警报!
|
|||
|
|
|||
|

|
|||
|
|
|||
|
**提前解决!**
|
|||
|
|
|||
|
## 基本代码解决方案
|
|||
|
|
|||
|
```javascript
|
|||
|
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();
|
|||
|
```
|
|||
|
|
|||
|
 [运行代码](https://codepen.io/dylantyates/pen/OwVxYB)
|
|||
|
|
|||
|
# 代码说明:
|
|||
|
|
|||
|
通过在`MATH_CONSTANTS`上使用Object.freeze(),我们可以避免操纵它。
|
|||
|
|
|||
|
#### 相关链接
|
|||
|
|
|||
|
* [Object.freeze()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)
|
|||
|
|
|||
|
## 捐款说明:
|
|||
|
|
|||
|
*  **请勿**添加与任何现有解决方案类似的解决方案。如果您认为它**_相似但更好_** ,那么尝试合并(或替换)现有的类似解决方案。
|
|||
|
* 添加解决方案的说明。
|
|||
|
* 将解决方案分为以下类别之一 - **基本** , **中级**和**高级** 。 
|
|||
|
* 如果您添加了任何**相关的主要内容,**请仅添加您的用户名。 (  **_不要_** _删除任何现有的用户名_ )
|
|||
|
|
|||
|
> 看到 [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272)供参考。
|