--- id: 587d7dae367417b2b2512b79 title: Extend Constructors to Receive Arguments challengeType: 1 videoUrl: '' localeTitle: تمديد البنائين لتلقي الحجج --- ## 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
```yml tests: - text: Dog يجب أن يحصل على حجة name . testString: 'assert((new Dog("Clifford")).name === "Clifford", "Dog should receive an argument for name.");' - text: يجب أن يحصل Dog على حجة color . testString: 'assert((new Dog("Clifford", "yellow")).color === "yellow", "Dog should receive an argument for color.");' - text: يجب أن يكون Dog لديه خاصية numLegs مضبوطة على 4. testString: 'assert((new Dog("Clifford")).numLegs === 4, "Dog should have property numLegs set to 4.");' - text: يجب أن يتم إنشاء terrier باستخدام منشئ Dog . testString: 'assert(terrier instanceof Dog, "terrier should be created using the Dog constructor.");' ```
## Challenge Seed
```js function Dog() { } ```
## Solution
```js // solution required ```