Files
freeCodeCamp/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/prevent-object-mutation.md
2023-06-20 20:24:05 +09:00

2.4 KiB

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
598f48a36c8c40764b4e52b3 منع تغيير الكائن (Prevent Object Mutation) 1 301207 prevent-object-mutation

--description--

كما رأينا في التحدي السابق، إعلان const وحده لا يحمي بياناتك من إمكانية تغييرها. لضمان عدم تغيير بياناتك، توفر JavaScript وظيفة Object.freeze لمنع تغيير البيانات.

سيتم رفض أي محاولة لتغيير الـ object، مع اظهار خطأ إذا كان السكريبت يعمل في strict mode.

let obj = {
  name:"FreeCodeCamp",
  review:"Awesome"
};
Object.freeze(obj);
obj.review = "bad";
obj.newProp = "Test";
console.log(obj); 

الكود obj.review و obj.newProp سيسفر عن أخطاء، لأن محررنا يعمل في وضع الـ strict mode افتراضيا، وسوف تعرض وحدة التحكم القيمة { name: "FreeCodeCamp", review: "Awesome" }.

--instructions--

في هذا التحدي سوف تستخدم Object.freeze لمنع تغيير الثوابت الرياضية. تحتاج إلى تجميد الـ object الآتي MATH_CONSTANTS بحيث لا يستطيع أحد تغيير قيمة PI،او إضافة أو حذف properties (خصائص).

--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();