freeCodeCamp/curriculum/challenges/arabic/02-javascript-algorithms-an.../object-oriented-programming/extend-constructors-to-rece...

4.3 KiB

id title challengeType videoUrl localeTitle
587d7dae367417b2b2512b79 Extend Constructors to Receive Arguments 1 تمديد البنائين لتلقي الحجج

Description

عملت Bird Dog من التحدي الأخير بشكل جيد. ومع ذلك ، لاحظ أن جميع Birds التي يتم إنشاؤها بواسطة منشئ Bird تسمى تلقائيًا Albert ، وهي زرقاء اللون ، ولها أرجل. ماذا لو كنت تريد الطيور ذات القيم المختلفة للاسم واللون؟ من الممكن تغيير خصائص كل طائر يدويًا ، لكن ذلك سيكون كثيرًا من العمل:
دعونا بجعة = طائر جديد () ؛
swan.name = "Carlos"؛
swan.color = "white"؛
افترض أنك كنت تكتب برنامج لتتبع مئات أو حتى الآلاف من الطيور المختلفة في القفص. سيستغرق الأمر الكثير من الوقت لإنشاء جميع الطيور ، ثم تغيير الخصائص إلى قيم مختلفة لكل واحد. لإنشاء كائنات Bird مختلفة بسهولة أكبر ، يمكنك تصميم منشئ Bird الخاص بك لقبول المعلمات:
وظيفة الطيور (الاسم واللون) {
this.name = name؛
this.color = لون؛
this.numLegs = 2 ،
}
ثم قم بتمرير القيم كحجج لتعريف كل طائر فريد في منشئ Bird : let cardinal = new Bird("Bruce", "red"); هذا يعطي مثال جديد من Bird مع اسم وخصائص اللون لتعيين بروس والأحمر ، على التوالي. لا يزال يتم تعيين الخاصية numLegs إلى 2. يحتوي cardinal على هذه الخصائص:
cardinal.name // => بروس
cardinal.color // => أحمر
cardinal.numLegs // => 2
المنشئ أكثر مرونة. من الممكن الآن تحديد خصائص كل Bird في وقت إنشائه ، وهو أحد الطرق التي تكون بها منشئات جافا سكريبت مفيدة للغاية. يقوموا بتجميع الأشياء معًا استنادًا إلى الخصائص والسلوكيات المشتركة وتحديد مخطط يعمل تلقائيًا على إنشائها.

Instructions

إنشاء منشئ Dog آخر. هذه المرة ، إعداده لاتخاذ المعلمات name color ، ولها خاصية numLegs ثابتة في 4. ثم إنشاء Dog جديد المحفوظة في terrier متغير. تمريرها جهازي كوسائط name ولخصائص color .

Tests

tests:
  - text: <code>Dog</code> يجب أن يحصل على حجة <code>name</code> .
    testString: 'assert((new Dog("Clifford")).name === "Clifford", "<code>Dog</code> should receive an argument for <code>name</code>.");'
  - text: يجب أن يحصل <code>Dog</code> على حجة <code>color</code> .
    testString: 'assert((new Dog("Clifford", "yellow")).color === "yellow", "<code>Dog</code> should receive an argument for <code>color</code>.");'
  - text: يجب أن يكون <code>Dog</code> لديه خاصية <code>numLegs</code> مضبوطة على 4.
    testString: 'assert((new Dog("Clifford")).numLegs === 4, "<code>Dog</code> should have property <code>numLegs</code> set to 4.");'
  - text: يجب أن يتم إنشاء <code>terrier</code> باستخدام منشئ <code>Dog</code> .
    testString: 'assert(terrier instanceof Dog, "<code>terrier</code> should be created using the <code>Dog</code> constructor.");'

Challenge Seed

function Dog() {

}

Solution

// solution required