في الواقع ، عندما بدأت في تعلم JS لأول مرة ، نظرت إلى تنفيذ الميراث. في ذلك الوقت ، حاولت فقط فهم شرائح الكود التي رأيتها من الكتاب. لقد قمت بإعادة التفكير فيها اليوم وشعرت أن هذا كان نتيجة لتطور تفكير استكشاف.
الميراث يعني إعادة الاستخدام.
إذا وضعت جانباً الفكرة المتأصلة في الميراث ودع B إعادة استخدام أعضاء A ، فإن أبسط وأكثر الطرق وقحة للقيام بذلك ، B = A ؛
ثم ، والسؤال هو: أي تغيير إلى B هو تغيير إلى (نفس الكائن).
حسنًا ، ثم نسخ واحد. إذا كانت النسخة الضحلة غير آمنة بما فيه الكفاية ، فاستخدم نسخة عميقة.
المشكلة: يتم إعادة استخدام الكود ، لكن الذاكرة تضيع (بغض النظر عن المتغيرات أو الأساليب ، فهو كائن في JS).
إذا لم تقم بنسخ وقراءة وكتابة ، فيمكنك استخدام النموذج الأولي JS ، ب .__ proto__ = a. بشكل عام ، نحن لا نغير __proto__ مباشرة ، إنه عنيف للغاية. يوفر JS طريقة يمكنها تحقيق الهدف "اللطيف" - الكائن.
هذه الطريقة ممكنة ، ولكن هذا مجرد وضع إعادة استخدام لكائنات محددة. ماذا لو حققنا "الكائن الذي تم إنشاؤه باستخدام ConstructorB يمكنه إعادة استخدام النموذج الأولي لكائن Constructora"؟
الجواب هو: تعامل مع النمط النمط ، وعلاج A as constructora.prototype.
سؤال:
حل:
عند إعلان البناء ، سيطلب النظام تلقائيًا constructorb.prototype.constructor = constructorb ؛ في الكود أعلاه ، يتم إلقاء المنشئ بعيدًا ويضاف المُنشئ.
ما سبق هو الميراث الأساسي. ليس ضمن نطاق هذه المقالة ، حول كيفية استدعاء الفئات الفرعية إلى مُنشئ وأعضاء الفئة الأصل بشكل عام (مثل هذا ._super) ، كيفية تنفيذ وضع الميراث بشكل عام (مثل A = MerinitFrom (B)) ، إلخ.
ما سبق هو المحتوى الكامل للميراث القديم لفئات جافا سكريبت التي يجلبها لك المحرر. آمل أن يدعم الجميع wulin.com أكثر ~