5. الميراث الطفيلي
على غرار المُنشئين الطفيلي وأنماط المصنع ، قم بإنشاء وظيفة تُستخدم فقط لتغليف عملية الميراث ، والتي تعزز الكائن داخليًا بطريقة أو بأخرى وإرجاع الكائن أخيرًا.
دالة createAnother (Original) {var clone = object.create (Original) ؛ // قم بإنشاء كائن جديد عن طريق استدعاء الدالة clone.sayhi = function () {// تعزيز هذا الكائن بطريقة ما ("hi") ؛ } ؛ عودة استنساخ // إرجاع هذا الكائن} var person = {name: "bob" ، الأصدقاء: ["Shelby" ، "Court" ، "van"] شخص آخر. sayhi () ؛في المثال أعلاه ، تتلقى وظيفة Createanother معلمة ، أي الكائن ليتم استخدامه كأساس للكائن الجديد.
شخص آخر هو كائن جديد تم إنشاؤه على أساس الشخص. لا يحتوي الكائن الجديد على جميع خصائص وأساليب الشخص فحسب ، بل يحتوي أيضًا على طريقة Sayhi () الخاصة به.
6. الجمع الطفيلي الميراث
الميراث الجمع هو نمط الميراث الأكثر استخداما في JS. أكبر مشكلة في الوراثة المركب هي أن المُنشئ سيتم استدعاؤه مرتين في أي حال: مرة واحدة عند إنشاء نموذج فرعي أولي ، والوقت الآخر داخل مُنشئ النوع الفرعي.
وظيفة supertype (name) {this.name = name ؛ this.colors = ["Red" ، "Blue" ، "Green"] ؛} supertype.prototype.sayname = function () {Alert (this.name) ؛} الدالة الفرعية (الاسم ، العمر) {supertype.call (هذا ، الاسم) ؛ // الدعوة الثانية إلى supertype () this.age = age ؛} النوع الفرعي. // أول مكالمة إلى supertype () subtype.prototype.عندما يتم استدعاء مُنشئ SuperType لأول مرة ، سيحصل النموذج الفرعي. كلاهما خصائص مثيل لـ SuperType ، لكنهما موجودان الآن في النموذج الأولي من النوع الفرعي.
عندما يتم استدعاء مُنشئ النوع الفرعي ، يتم استدعاء مُنشئ SuperType مرة أخرى ، وهذه المرة ، يتم إنشاء اسم السمة والألوان على الكائن الجديد.
لذا فإن هاتين السمة تمنعان سمتان من نفس الاسم في النموذج الأولي.
الجمع الطفيلي الميراث هو حل هذه المشكلة.
ورث السمات عن طريق استعارة البنائين.
ورث الطريقة من خلال سلسلة النموذج الأولي.
ليست هناك حاجة لاستدعاء مُنشئ SuperType لتحديد النموذج الأولي للنوع الفرعي.
وظيفة errantPrototype (النوع الفرعي ، superType) {varotype = object.create (supertype.prototype) ؛ // إنشاء كائن أولي. // تحسين النوع الفرعي للكائن. النموذج = النموذج الأولي ؛ // حدد كائن} وظيفة supertype (name) {this.name = name ؛ this.colors = ["Red" ، "Blue" ، "Green"] ؛} supertype.prototype.sayname = function () {Alert (this.name) ؛} الدالة الفرعية (الاسم ، العمر) {supertype.call (هذا ، الاسم) ؛ // الدعوة الثانية إلى supertype () this.age = age ؛} النمط الوراثي (النوع الفرعي ، supertype) النوع الفرعي. النموذج الفرعي.تستقبل دالة inorditPrototype معلمتين: مُنشئ النوع الفرعي ومشارك SuperType.
1. إنشاء نسخة من النموذج الأولي supertype.
2. إضافة سمة مُنشئ إلى النسخة التي تم إنشاؤها لتعويض سمة المنشئ الافتراضية المفقودة بسبب إعادة كتابة النموذج الأولي.
3. قم بتعيين الكائن الذي تم إنشاؤه حديثًا (أي النسخة) إلى النموذج الأولي للنوع الفرعي. تستدعي هذه الطريقة فقط مُنشئ SuperType مرة واحدة ، ويمكن أيضًا استخدام مثيل EntoryOf و IsProtypeOF () بشكل طبيعي.
تتحدث المقالة أعلاه باختصار عن JS الوراثة _Parasitic الميراث والميراث الطفيلي هو كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.