ميراث البناء الاقتراض
في حل مشكلة تضمين قيم النوع المرجعي في نموذج أولي ، بدأ المطورون في استخدام تقنية تسمى سرقة مُنشئ الاقتراض (تسمى أحيانًا كائنات مزورة أو ميراث كلاسيكي). الفكرة الأساسية لهذه التقنية بسيطة للغاية ، وهي تسمية مُنشئ SuperType داخل مُنشئ النوع الفرعي.
الوضع الأساسي
الدالة supertype () {this.colors = ["Red" ، "Blue" ، "Green"] ؛} function subtype () {// supertype supertype.call (this) ؛} var extal11 = new type () ؛ eChate1.colors.push ("Black") ؛ alert (exection11.colors) ؛ // "Red ، Blue ، Green ، Black" var inute2 = new Type () ؛ ALERT (extal2.colors) ؛ // "أحمر ، أزرق ، أخضر"الأفكار الأساسية
تتمثل الفكرة الأساسية في استعارة مُنشئين في استخدام المكالمة أو التقدم بطلب للنسخ (الاقتراض) الخصائص والأساليب المحددة في الفئة الأصل في المثيل الذي تم إنشاؤه بواسطة الفئة الفرعية. لأن هذا الكائن مرتبط في وقت التشغيل بناءً على بيئة تنفيذ الوظيفة. وهذا يعني ، على الصعيد العالمي ، هذا يساوي النافذة ، وعندما تسمى الوظيفة كوسيلة لكائن ما ، فإن هذا يساوي هذا الكائن. يمكن استخدام طرق المكالمة والتطبيق لاستدعاء طريقة بدلاً من كائن آخر. يمكن لطرق الاتصال والتطبيق تغيير سياق كائن الدالة من السياق الأولي إلى كائن جديد محدد بواسطة ThisoBJ.
لذلك ، فإن مُنشئ الاقتراض هذا ، عندما يتم استدعاء الكائن الجديد (لاحظ أن المشغل الجديد يختلف عن المكالمة المباشرة. عندما يتم استدعاء الوظيفة ، يشير هذا إلى النافذة. عندما يتم إنشاء الجديد ، يتم إنشاء هذا إلى المثيل الذي تم إنشاؤه) ، ويتم إنشاء كائن مثيل جديد وتنفيذ الكود في النوع الفرعي. تستدعي المكالمة في النوع الفرعي SuperTyep ، مما يعني أن هذا الإشارة قد تم تغييره إلى الإشارة إلى مثيل جديد ، لذلك سيتم تعيين هذه السمات والأساليب ذات الصلة في SuperType إلى المثيل الجديد ، بدلاً من التعيين إلى SupType. جميع الحالات لديها هذه الخصائص وأساليب هذا المحدد من قبل فئة الأصل.
المزايا
بالمقارنة مع سلاسل النموذج الأولي ، يتمتع منشئي الاقتراض بميزة كبيرة ، أي أنه يمكنهم تمرير المعلمات إلى مُنشئات SuperType في مُنشئات النوع الفرعي. نظرًا لأن السمة مرتبطة بهذا ، يتم تعيينها إلى المثيل المقابل عند الاتصال ، ولن تؤثر قيم كل مثيل على بعضها البعض.
على سبيل المثال:
الدالة supertype (name) {this.name = name ؛} الوظيفة الفرعية () {// errantits supertype ، وكذلك تمرر المعلمة supertype.call (هذا ، "nicholas") ؛ // مثيل السمة this.age = 29 ؛ //"nicholas"؛alert(instance.age) ؛ // 29عيوب
إذا قمت فقط باستعارة مُنشئ ، فلن يتم تجنب المشكلات في نمط المنشئ - يتم تعريف الأساليب جميعها في المنشئ ، لذلك لا توجد طريقة للحديث عن إعادة استخدام الوظيفة. علاوة على ذلك ، فإن الأساليب المحددة في النماذج الأولية SuperType غير مرئية أيضًا للأنواع الفرعية ، ونتيجة لذلك ، يمكن لجميع الأنواع استخدام أنماط المنشئ فقط. بالنظر إلى هذه المشكلات ، نادراً ما يتم استخدام تقنية مقاومة المقترضات بمفردها.
الجمع بين الميراث
الميراث الجمع ، يسمى أحيانًا الميراث المليء بالمرحلة الزائفة. إنه نموذج ميراث يجمع بين سلسلة النموذج الأولي وتكنولوجيا المنشئ المستعارة في قطعة واحدة ، وذلك للعب نقاط قوة كليهما.
الأفكار الأساسية
تتمثل الفكرة في استخدام سلسلة النموذج الأولي لتنفيذ وراثة خصائص وطرق النموذج الأولي ، وتنفيذ وراثة خصائص المثيل عن طريق استعارة البنائين. وبهذه الطريقة ، يتم تحقيق تعدد الوظائف من خلال تحديد الأساليب على النموذج الأولي ، ويمكنه أيضًا التأكد من أن كل مثيل له سمات خاصة به.
النموذج الأساسي
وظيفة supertype (name) {this.name = name ؛ this.colors = ["Red" ، "Blue" ، "Green"] ؛} supertype.prototype.sayname = function () {Alert (this.name) ؛} ؛ function subtype (name ، age) {// eneritance supertype.call (this ، name) ؛ هذا. 29) ؛ مثيل 1.colors.push ("أسود") ؛ تنبيه (مثيل 1.Colors) ؛ // "أحمر ، أزرق ، أخضر ، أسود" مثيل 1.SayName () ؛ // "Nicholas" ؛ extal1.Sayage () ؛ // 29VAR مثيل 2 = نوع فرعي جديد ("Greg" ، 27) ؛ ALERT (extal2.colors) ؛ // "Red ، Blue ، Green" extry2.SayName () ؛ // "greg" ؛ extail2.sayage () ؛ // 27المزايا
يتجنب الوراثة المركب عيوب سلاسل النموذج الأولي والمصمم المستعارة ، ويجمع بين مزاياها ، ويصبح نمط الميراث الأكثر شيوعًا في جافا سكريبت.
عيوب
المشكلة الأكبر في الميراث المشترك هي أنه على أي حال ، سيتم استدعاء مُنشئ SuperType مرتين: مرة واحدة عند إنشاء نموذج فرعي ، والمرة الأخرى داخل مُنشئ النوع الفرعي. على الرغم من أن الأنواع الفرعية ستحتوي في نهاية المطاف على جميع خصائص المثيل لكائن SuperType ، يتعين علينا تجاوز هذه الخصائص عند استدعاء مُنشئ النوع الفرعي.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.