"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > التظليل في جافا سكريبت

التظليل في جافا سكريبت

تم النشر بتاريخ 2024-11-08
تصفح:740

ملخص

التظليل بمفهوم خاص في JavaScript يجعل الأساليب التي تنتمي إلى الفئة الأصل قابلة لإعادة التعريف في الفئة الفرعية.

دعنا نذهب مع اثنتين من الألعاب المحبوبة في القرن الحادي والعشرين والتي يسهل تخمينها، GTA وRed Dead Redemption، إلا إذا لم تكن من محبي ألعاب العالم المفتوح.

Shadowing in JavaScript

بالعودة إلى موضوعنا، سأعطي GTA دور فئة الوالدين ويأخذ RDR مكان فئة الطفل.

شفرة

class GTA {
  constructor() {
    this.openWorld = {};
  }

  addFeature(feature, value) {
    this.openWorld[feature] = value;
    return this.openWorld[feature];
  }
}

class RDR extends GTA {
  addFeature(feature) {
    super.addFeature(feature, true);  // Calls the parent class' method and adds the feature
    return true;
  }
}

var role = new RDR();
console.log(role.addFeature('ROLE_PLAYER'));  // This will return true
console.log(role.openWorld);  // This will now have 'ROLE_PLAYER' added to it with value true

توضيح:

super.addFeature(feature, true) يستدعي أسلوب addFeature في فئة GTA، ويضيف الميزة إلى كائن openWorld.

يُرجع الأسلوب addFeature في RDR صحيحًا، ولكنه يضمن أيضًا إضافة ROLE_PLAYER إلى كائن openWorld.

Shadowing in JavaScript

مذكرة ختامية

يبدو أن ROLE_PLAYER دخل للتو إلى العالم المفتوح الجامح بقيمة حقيقية. آمل أن يكونوا مستعدين لمواجهة الأخطاء التي سيواجهونها، فهي لعبة عالم مفتوح، بعد كل شيء!

بيان الافراج تم نشر هذه المقالة على: https://dev.to/alimalim77/shadowing-in-javascript-12ci?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3