--- id: 598f48a36c8c40764b4e52b3 title: Prevent Object Mutation challengeType: 1 videoUrl: '' localeTitle: 防止对象突变 --- ## Description
正如之前的挑战所示, const声明本身并不能真正保护您的数据免受突变。为确保您的数据不会发生变化,JavaScript提供了一个Object.freeze函数来防止数据突变。对象冻结后,您将无法再从中添加,更新或删除属性。任何更改对象的尝试都将被拒绝而不会出现错误。
让obj = {
名称:“FreeCodeCamp”
点评:“真棒”
};
Object.freeze(OBJ);
obj.review =“坏”; //将被忽略。不允许变异
obj.newProp =“测试”; //将被忽略。不允许变异
的console.log(OBJ);
// {name:“FreeCodeCamp”,评论:“很棒”}
## Instructions
在这个挑战中,您将使用Object.freeze来防止数学常量发生变化。您需要冻结MATH_CONSTANTS对象,以便没有人能够更改PI的值,添加或删除属性。
## Tests
```yml tests: - text: 不要替换const关键字。 testString: 'getUserInput => assert(getUserInput("index").match(/const/g), "Do not replace const keyword.");' - text: MATH_CONSTANTS应该是一个常量变量(使用const )。 testString: 'getUserInput => assert(getUserInput("index").match(/const\s+MATH_CONSTANTS/g), "MATH_CONSTANTS should be a constant variable (by using const).");' - text: 请勿更改原始MATH_CONSTANTS 。 testString: 'getUserInput => assert(getUserInput("index").match(/const\s+MATH_CONSTANTS\s+=\s+{\s+PI:\s+3.14\s+};/g), "Do not change original MATH_CONSTANTS.");' - text: PI等于3.14 。 testString: 'assert(PI === 3.14, "PI equals 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 // solution required ```