البرمجة

تحسين التوريث في JavaScript: استخدام مُنشئات الأب والـ Prototype بفاعلية

عند التعامل مع الوراثة في لغة البرمجة JavaScript، يعتبر استخدام مُنشئ الأب (Parent Constructor) أمرًا أساسيًا لتمرير الخصائص العامة إلى الفئات الفرعية. في مثالك، تحاول إنشاء فئة playerUnit تورث من Unit، وتحتاج إلى استخدام Unit.apply(this, arguments); لنقل الخصائص.

ومع ذلك، يبدو أن هناك بعض الأخطاء في تعريف الفئات واستخدامها. لنقم بفحص الكود وتوجيهك للتصحيح.

أولاً، في مُنشئ Unit، يجب عليك تعيين القيم المبدئية للخصائص x_coord، y_coord، و color:

javascript
var Unit = function(x_coord, y_coord, color) { this.x_coord = x_coord; this.y_coord = y_coord; this.color = color; };

بعد ذلك، في مُنشئ playerUnit، يجب عليك تمرير القيم اللازمة عند استدعاء Unit.apply(this, arguments);:

javascript
var playerUnit = function(gameObj, x_coord, y_coord, color) { Unit.apply(this, [x_coord, y_coord, color]); };

أيضاً، يجب أن يتم تعيين prototype بشكل صحيح لـ playerUnit:

javascript
playerUnit.prototype = Object.create(Unit.prototype); playerUnit.prototype.constructor = playerUnit;

بعد إجراء هذه التعديلات، يجب أن يعمل الكود بشكل صحيح. يمكنك الاطلاع على الرابط التالي لرؤية الكود المعدل:

jsfiddle: https://jsfiddle.net/vzk73qah/4/

بهذا الشكل، يمكنك الاستمرار في إنشاء فئات أخرى مثل enemyUnit، tankUnit، وboatUnit باستخدام نفس الطريقة، وضمان أنك تمرر القيم الصحيحة للمُنشئ الأب.

المزيد من المعلومات

بالطبع، دعنا نوسع قليلاً على مفهوم الوراثة في لغة البرمجة JavaScript وكيف يمكن استفادة مزيد من المعلومات في بناء تصميم أكثر تنظيمًا وفاعلية.

عندما نتحدث عن الوراثة في البرمجة الشيئية، نقصد القدرة على إنشاء فئة جديدة (الفئة المشتقة) تستفيد من السلوك والخصائص من فئة موجودة (الفئة الأم). في حالتك، playerUnit هي الفئة المشتقة، وUnit هي الفئة الأم.

فيما يلي بعض المفاهيم التي قد تساعدك في تحسين تصميم الكود:

1. المُنشئات (Constructors):

في JavaScript، يُعتبر المُنشئ (Constructor) وظيفة تُستخدم لبناء الكائنات من فئة معينة. في مثالك، Unit و playerUnit هما مثال على مُنشئين. يجب أن يتم استدعاء مُنشئ الأب (Unit) داخل مُنشئ الابن (playerUnit) باستخدام Unit.apply(this, arguments); لضمان نقل الخصائص بشكل صحيح.

2. الـ prototype:

يتيح prototype لك إضافة وتعديل الخصائص والوظائف لفئة معينة. في حالتك، playerUnit.prototype يتم تعيينه ليكون كائنًا جديدًا يستفيد من Unit.prototype. هذا يسمح بمشاركة الوظائف بين جميع الكائنات التي ترث من Unit.

3. تعيين الـ constructor:

بما أنك تعيد تعيين playerUnit.prototype، يفترض أن تقوم أيضًا بإعادة تعيين constructor لضمان أن playerUnit.prototype.constructor يشير إلى الفئة الصحيحة. هذا يحافظ على التسلسل الهرمي بشكل صحيح.

javascript
playerUnit.prototype.constructor = playerUnit;

4. الاستفادة من التوريث:

باستخدام الوراثة بشكل صحيح، يمكنك إنشاء فئات أخرى مثل enemyUnit، tankUnit، وboatUnit بسهولة. تأكد من تمرير القيم الصحيحة عند استدعاء مُنشئ الأب (Unit).

5. الإشارة إلى أخطاء التنفيذ:

عند وجود أخطاء مثل “Uncaught ReferenceError: x_coord is not defined”، يفيد البحث عن السطر الذي يحدث فيه الخطأ والتحقق من القيم التي تم تمريرها للمُنشئات.

ختامًا:

باستخدام هذه المفاهيم، يمكنك بناء هيكل تنظيمي قوي وقابل للتوسع لفئاتك المستقبلية. تأكد دائمًا من فحص الأخطاء والتحقق من القيم التي تتم تمريرها للدوال لتفادي المشاكل في التنفيذ.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر