2.7 KiB
id, title, challengeType, forumTopicId, dashedName
| id | title | challengeType | forumTopicId | dashedName |
|---|---|---|---|---|
| 598f48a36c8c40764b4e52b3 | Запобігання мутаціям об’єкта | 1 | 301207 | prevent-object-mutation |
--description--
Як ми побачили у попередньому завданні, саме оголошення const не дуже захищає ваші дані від мутацій. Щоб запобігти зміни даних, JavaScript надає функцію Object.freeze для запобігання мутації даних.
Будь-яка спроба змінити об’єкт буде відхилена з повідомленням про помилку, якщо скрипт виконується в строгому режимі.
let obj = {
name:"FreeCodeCamp",
review:"Awesome"
};
Object.freeze(obj);
obj.review = "bad";
obj.newProp = "Test";
console.log(obj);
Присвоєння obj.review й obj.newProp призведуть до помилок, оскільки наш редактор за замовчуванням працює в строгому режимі та консоль покаже значення { name: "FreeCodeCamp", review: "Awesome" }.
--instructions--
У цьому завданні ви використовуватимете Object.freeze, щоб запобігти зміни математичних констант. Ви повинні заморозити об’єкт MATH_CONSTANTS так, щоб ніхто не зміг змінити значення PI, додати чи видалити властивості.
--hints--
Ви не повинні замінювати ключове слово const.
assert(code.match(/const/g));
MATH_CONSTANTS повинна бути константною змінною (використовуйте const).
assert(code.match(/const\s+MATH_CONSTANTS/g));
Ви не повинні змінювати початкове оголошення MATH_CONSTANTS.
assert(code.match(
/const\s+MATH_CONSTANTS\s+=\s+{\s+PI:\s+3.14\s+};/g
));
PI має дорівнювати 3.14.
assert(PI === 3.14);
--seed--
--seed-contents--
function freezeObj() {
const MATH_CONSTANTS = {
PI: 3.14
};
// Only change code below this line
// Only change code above this line
try {
MATH_CONSTANTS.PI = 99;
} catch(ex) {
console.log(ex);
}
return MATH_CONSTANTS.PI;
}
const PI = freezeObj();
--solutions--
function freezeObj() {
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();