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
في وقت إنشائه ، وهو أحد الطرق التي تكون بها منشئات جافا سكريبت مفيدة للغاية. يقوموا بتجميع الأشياء معًا استنادًا إلى الخصائص والسلوكيات المشتركة وتحديد مخطط يعمل تلقائيًا على إنشائها. Dog
آخر. هذه المرة ، إعداده لاتخاذ المعلمات name
color
، ولها خاصية numLegs
ثابتة في 4. ثم إنشاء Dog
جديد المحفوظة في terrier
متغير. تمريرها جهازي كوسائط name
ولخصائص color
. 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.");'
```