4.3 KiB
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