Files
freeCodeCamp/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/object-oriented-programming/extend-constructors-to-receive-arguments.md
2023-01-03 11:16:51 -06:00

3.4 KiB

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
587d7dae367417b2b2512b79 تمديد المنشئات (Constructors) لتلقي المعطيات (Arguments) 1 18235 extend-constructors-to-receive-arguments

--description--

الـ constructors الآتية Bird و Dog من التحدي الآخير عملوا بشكل جيد. ومع ذلك، لاحظ أن جميع الـ Birds التي تم إنشاؤها باستخدام Bird يتم تسميتها تلقائيًا باسم Albert، وهي زرقاء اللون، ولديها ساقان. ماذا لو أردت طيور ذات قيم مختلفة للاسم واللون؟ من الممكن تغيير خصائص كل طائر يدوياً ولكن هذا سيكون مجهد:

let swan = new Bird();
swan.name = "Carlos";
swan.color = "white";

لنفترض أنك كنت تكتب برنامجاً لتعقب مئات أو حتى آلاف الطيور المختلفة في مطير. سوف يستغرق الأمر الكثير من الوقت لإنشاء كل الطيور، ثم تغيير الخصائص إلى قيم مختلفة لكل منها. من أجل إنشاء كائنات الـ Bird المختلفة بسهولة، يمكنك تصميم منشئك (constructor) مسمى Bird بحيث يقبل الوسائط (parameters):

function Bird(name, color) {
  this.name = name;
  this.color = color;
  this.numLegs = 2;
}

ثم مرر القيم كمعطيات (arguments) لتحديد كل طائر فريد في منشئ (constructor) باسم Bird: ينشئ let cardinal = new Bird("Bruce", "red"); مثيل (instance) جديد من Bird بخصائص name و color بقيم Bruce و red علي التوالي. مازالت خاصية numLegs بقيمة 2. يحتوي cardinal على هذه الخواص:

cardinal.name
cardinal.color
cardinal.numLegs

يكون constructor أكثر مرونة. من الممكن الآن تحديد الخصائص لكل Bird في وقت إنشائه، وهي إحدى الطرق الذي تجعل من constructor في JavaScript مفيد جداً. يقوم constructor بتجميع objects معاً استناداً إلى الخصائص والسلوك المشترك وتحديد مخطط يقوم بإنشائها تلقائياً.

--instructions--

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

--hints--

يجب أن يتلقى Dog معطى name.

assert(new Dog('Clifford').name === 'Clifford');

يجب أن يتلقى Dog معطى color.

assert(new Dog('Clifford', 'yellow').color === 'yellow');

Dog يجب أن يكون لديه خاصية numLegs بقيمة محددة بـ 4.

assert(new Dog('Clifford').numLegs === 4);

terrier يجب أن يتم إنشاؤه باستخدام constructor الـ Dog.

assert(terrier instanceof Dog);

--seed--

--seed-contents--

function Dog() {

}

--solutions--

function Dog (name, color) {
  this.numLegs = 4;
  this.name = name;
  this.color = color;
}

const terrier = new Dog();