وراثة جافا سكريبت مع عدة طبقات: A-> B-> C ، استخدم الدوال من A في C

في JavaScript ، أرغب في تحقيق ما يلي:

Class A (Array) -> Class B (EntityContainer) -> Class C (EntityList)

في الكود:

function EntityContainer() {
    ...
}

EntityContainer.prototype = new Array;
EntityContainer.prototype.constructor = EntityContainer;
EntityContainer.prototype.parent = Array.prototype

function EntityList() {
    ...
}

EntityList.prototype = new EntityContainer;
EntityList.prototype.constructor = EntityList;
EntityList.prototype.parent = EntityContainer.prototype

بطبيعة الحال ، يمكن تضمين مادة التوريث في وظيفة "الوراثة من".

هل هذه هي الطريقة الصحيحة لتحقيق ذلك ويمكنني استدعاء "هذا [i]" داخل EntityList عند التكرار على جميع العناصر (باستخدام this.length)؟

هل هناك أي شيء يمكنك القيام به بشكل أفضل هنا؟

شكرا يا شباب!

0

1 إجابة

السبب الوحيد وراء رغبتك في القيام بما تصفه هو فحص النوع باستخدام عامل التشغيل instanceof . إذا لم تكن بحاجة إلى ذلك ، فستكون أفضل من التركيب ، وعناصر المصفوفة كمتغير الحالة. إن [] accessor لا يكاد يذكر ، ويمكن استبداله بـ get() .

0
وأضاف
نعم ، ولكن في الأساس لم أكن أريد تمديد كائن الصفيف القياسي لجافا سكريبت بطريقي الخاصة (مثل يحتوي على() وما إلى ذلك). هذا هو السبب في أنني اخترت الميراث ...
وأضاف المؤلف Sebastian B., مصدر
يعتمد ذلك على المنصات التي تستهدفها ، JS 1.6 (ECMA 5) شائع جدًا بالفعل ، وعلى سبيل المثال a.contains تتم بسهولة باستخدام developer.mozilla.org/en/JavaScript/Reference/Global_Objects&zwnj؛/& hellip؛ . إذا قمت باستهداف المنصات التي لا تملك هذه الطرق ، أقترح استخدام الحشوات/polyfills calormen.com/polyfill/# polyfill في الوقت نفسه.
وأضاف المؤلف skrat, مصدر