freeCodeCamp/curriculum/challenges/arabic/02-javascript-algorithms-an.../object-oriented-programming/use-closure-to-protect-prop...

3.5 KiB

id title challengeType videoUrl localeTitle
587d7db2367417b2b2512b8a Use Closure to Protect Properties Within an Object from Being Modified Externally 1 استخدم Closure لحماية الخصائص داخل كائن من التعديل الخارجي

Description

في التحدي السابق ، كان bird name ملكية عامة. ويعتبر الجمهور لأنه يمكن الوصول إليها وتغييرها خارج تعريف bird .
bird.name = "Duffy" ؛
لذلك ، يمكن لأي جزء من التعليمات البرمجية بسهولة تغيير اسم bird إلى أي قيمة. فكر في أشياء مثل كلمات المرور والحسابات المصرفية التي يمكن تغييرها بسهولة عن طريق أي جزء من تعليمات البرمجة لديك. يمكن أن يسبب الكثير من القضايا. إن أبسط طريقة لجعل الخصائص خاصة هي عن طريق إنشاء متغير داخل دالة المنشئ. هذا يغير نطاق هذا المتغير ليكون داخل دالة المنشئ مقابل المتاحة عالمياً. بهذه الطريقة ، يمكن الوصول إلى الخاصية وتغييرها فقط بالطرق داخل دالة المنشئ أيضًا.
وظيفة الطيور () {
واسمحوا hatchedEgg = 10 ؛ // ملكية خاصة

this.getHatchedEggCount = function () {/ / / يمكن للجمهور أن يستخدم طريقة الطيور
العودة مع الفقس.

}
دع الحبيب = طائر جديد () ؛
ducky.getHatchedEggCount ()؛ // returns 10
هنا ، يعد getHachedEggCount طريقة مميزة ، لأنه يمتلك إمكانية الوصول إلى المتغير hatchedEgg . هذا ممكن لأنه يتم الإعلان عن hatchedEgg في نفس السياق مثل getHachedEggCount . في جافا سكريبت ، يمكن لأي وظيفة دائمًا الوصول إلى السياق الذي تم إنشاؤه فيه. وهذا ما يسمى closure .

Instructions

تغيير كيفية تحديد weight في وظيفة Bird لذا فهو متغير خاص. ثم قم بإنشاء أسلوب getWeight بإرجاع قيمة weight .

Tests

tests:
  - text: يجب أن تكون خاصية <code>weight</code> متغيرًا خاصًا.
    testString: 'assert(!code.match(/this\.weight/g), "The <code>weight</code> property should be a private variable.");'
  - text: يجب أن تقوم التعليمات البرمجية بإنشاء طريقة في <code>Bird</code> تسمى <code>getWeight</code> تقوم بإرجاع <code>weight</code> .
    testString: 'assert((new Bird()).getWeight() === 15, "Your code should create a method in <code>Bird</code> called <code>getWeight</code> that returns the <code>weight</code>.");'

Challenge Seed

function Bird() {
  this.weight = 15;


}

Solution

// solution required