3.3 KiB
3.3 KiB
id, title, challengeType, forumTopicId, localeTitle
id | title | challengeType | forumTopicId | localeTitle |
---|---|---|---|---|
598f48a36c8c40764b4e52b3 | Prevent Object Mutation | 1 | 301207 | Предотвращение мутации объектов |
Description
const
не защищает ваши данные от мутации. Чтобы ваши данные не менялись, JavaScript предоставляет функцию Object.freeze
для предотвращения мутации данных. После того, как объект будет заморожен, вы больше не сможете добавлять, обновлять или удалять из него свойства. Любая попытка изменить объект будет отклонена без ошибок. пусть obj = {
Название: "FreeCodeCamp",
Обзор: «Высокий»
};
Object.freeze (OBJ);
obj.review = "bad"; // будет проигнорирован. Мутация не допускается
obj.newProp = "Test"; // будет проигнорирован. Мутация не допускается
console.log (OBJ);
// {name: "FreeCodeCamp", обзор: "Awesome"}
Instructions
Object.freeze
для предотвращения изменения математических констант. Вам необходимо заморозить объект MATH_CONSTANTS
чтобы никто не мог изменять значение свойств PI
, добавлять или удалять.
Tests
tests:
- text: Do not replace <code>const</code> keyword.
testString: getUserInput => assert(getUserInput('index').match(/const/g));
- text: <code>MATH_CONSTANTS</code> should be a constant variable (by using <code>const</code>).
testString: getUserInput => assert(getUserInput('index').match(/const\s+MATH_CONSTANTS/g));
- text: Do not change original <code>MATH_CONSTANTS</code>.
testString: getUserInput => assert(getUserInput('index').match(/const\s+MATH_CONSTANTS\s+=\s+{\s+PI:\s+3.14\s+};/g));
- text: <code>PI</code> equals <code>3.14</code>.
testString: assert(PI === 3.14);
Challenge Seed
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
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();