2. مُنشئ الاقتراض
لحل المشكلة الناتجة عن تضمين قيم النوع المرجعي في النموذج الأولي ، نستخدم تقنية تسمى سرقة مُنشئ الاقتراض (تسمى أيضًا الكائنات المزورة أو الميراث الكلاسيكي).
الفكرة الأساسية لهذه التقنية: استدعاء مُنشئ SuperType داخل مُنشئ الفئة الفرعية.
يمكن تنفيذ المنشئ على كائن الفئة الفرعية التي تم إنشاؤها حديثًا باستخدام أساليب Apply () و Call ().
الدالة supertype () {this.colors = ["Red" ، "Blue" ، "Green"] ؛} function subtype () {// supertype supertype.apply (this) ؛} var extal1 = new type () ؛ eChate1.colors.push ("Black") ؛ // الأحمر ، الأزرق ، الأخضر ، مثيل Blackvar 2 = نوع فرعي جديد () ؛ تنبيه (مثيل 2. colors) ؛ // الأحمر ، الأزرق ، الأخضرفي المثال أعلاه ، يتم استدعاء مُنشئ SuperType فعليًا في بيئة مثيل النوع الفرعي الذي تم إنشاؤه حديثًا (مثيل 12). وبهذه الطريقة ، سيتم تنفيذ جميع رموز تهيئة الكائنات المحددة في وظيفة SuperType () على كائن النوع الفرعي الجديد. لذلك سيكون لكل مثيل من النوع الفرعي نسخته الخاصة من سمة الألوان.
تمرير المعلمات
بالنسبة لسلاسل النموذج الأولي ، يتمتع بمنشئو الاقتراض بميزة رائعة ، أي يمكنك تمرير المعلمات في مُنشئات SuperType في بنائي النوع الفرعي.
دالة supertype (name) {this.name = name ؛} function subtype () {supertype.call (this ، "bob") ؛ هذا. //18alert(instance1.name) ؛ // بوبمشكلة استعارة البنائين:
يتم تعريف جميع الطرق في المنشئ ، لذلك لا توجد طريقة للحديث عن إعادة استخدام الوظيفة. علاوة على ذلك ، فإن الأساليب المحددة في النماذج الأولية SuperType غير مرئية أيضًا لأنواع فرعية.
3. الجمع بين الميراث
يشير الميراث المركب ، الذي يطلق عليه أحيانًا الميراث الكلاسيكي الزائفة ، إلى الجمع بين سلاسل النموذج الأولي وتقنيات مُنشئ الاقتراض معًا. هذا هو وسيلة من الميراث الذي يلعب نقاط قوة كليهما.
استخدم سلاسل النموذج الأولي لتنفيذ ميراث خصائص وطرق النموذج الأولي ؛
يتحقق ميراث خصائص المثال من خلال اقتراض البنائين.
وبهذه الطريقة ، يتم تحقيق إعادة استخدام الوظيفة من خلال تحديد الأساليب على النموذج الأولي ، ويمكنه أيضًا التأكد من أن كل مثيل له سمات خاصة به.
وظيفة supertype (name) {this.name = name ؛ this.colors = ["Red" ، "Blue" ، "Green"] ؛} supertype.prototype.sayname = function () {Alert (this.name) ؛} function subtype (name ، Age) {// materitance supertype.call (this ، name) ؛ هذا. subtype.prototype. //red،blue،green-blackenstance1.sayname () ؛ //bobinstance1.Sayage () ؛ // 22var مثيل 2 = نوع فرعي جديد ("Alice" ، 21) ؛ ALERT (extal2.colors) ؛ //red-blue،greeninstance2.sayname () ؛ //aliceinstance2.sayage () ؛ // 21في هذا المثال ، يحدد مُنشئ SuperType خصائصين: الاسم والألوان. يحدد النموذج الأولي لـ SuperType طريقة Seallename ().
يمر منشئ النوع الفرعي في معلمة الاسم عند استدعاء مُنشئ SuperType ويحدد عمر السمة الخاص به. ثم قم بتعيين مثيل SuperType إلى النموذج الأولي للنوع الفرعي. يتم تعريف الطريقة التي يقولها () على هذا النموذج الأولي.
يتيح ذلك أن يكون لحالتين فرعيتين مختلفتين خصائصهما الخاصة - بما في ذلك سمات الألوان ، ويمكن استخدام نفس الطريقة.
تتحدث المقالة أعلاه لفترة وجيزة عن JS Ineriitance_Borrow Constructors & Combertantance هي كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.