قبل الحديث عن سلاسل النماذج الأولية ، يجب أن نفهم أولاً ما هي العلاقة بين الوظائف والوظائف المخصصة ، وما هي العلاقات التي لا تنفصم بين المُنشئين والنماذج الأولية والحالات؟ في الواقع ، جميع الوظائف هي حالات الوظيفة. هناك نموذج أولي للنموذج الأولي على المُنشئ ، وهو أيضًا كائن ؛ ثم هناك خاصية مُنشأة على كائن النموذج الأولي ، الذي يشير إلى المُنشئ ؛ وهناك خاصية _proto_ على كائن المثيل ، والتي تشير أيضًا إلى كائن النموذج الأولي ، وهذه الخاصية ليست خاصية قياسية ولا يمكن استخدامها في البرمجة. يتم استخدام هذه الخاصية داخليًا لاستخدام المتصفح.
// _proto_ يوجد نموذج أولي خاصية في الوظيفة. سيتم توصيل الكائن الذي تم إنشاؤه بواسطة هذه الوظيفة بالخاصية بشكل افتراضي. // العلاقة بين النموذج الأولي و _proto___ هي من منظور الكائن ، النموذج الأولي من منظور المنشئ.
أدناه ، دعونا نلقي نظرة على الصورة ونتحدث.
1. العلاقة بين المنشئ والنموذج الأولي والمثال
①+كائن
②+وظيفة+كائن+صفيف
بعد فهمها ، دعونا نناقش ماهية سلسلة النموذج الأولي. بعبارة صريحة ، إنها في الواقع سلسلة محدودة تتشكل بين كائن مثيل محدود ونموذج أولي ، يتم استخدامه لتنفيذ سمات مشتركة وميراث. بعد ذلك ، دعونا نلقي نظرة على الكود للتحدث.
var obj = new Object () ؛ الكائن هو كائن النموذج الأولي مع كائن النموذج الأولي وكائن النموذج الأولي OBJ._Proto _._ proto _._ proto _._ proto__proto_ لديه أيضًا كائن النموذج الأولي. يستمر كائن النموذج الأولي للكائن في البحث وسوف تجد سلسلة من سلسلة النموذج الفارغ // arr -> array.prototype -> object.prototype -> null var o = new Object () ؛ o -> Object.prototype -> null ؛ Function Foo1 () {this.name1 = '1' ؛} fOOT2 () {this.name2 = '2' ؛} foo2.prototype = new foo1 () ؛ function foo3 () {this.name = '3' ؛التالي هو قضية الميراث.
2. الميراث
1) الميراث النموذج الأولي
وظيفة animal (name) {this.name = name ؛ } وظيفة Tiger (color) {this.color = color ؛ } // var tiger = new tiger ('Yellow') ؛ // console.log (tiger.color) ؛ // console.log (tiger.name) ؛ // undefined // tiger.prototype = new Animal ('tiger') ؛ // One Way Object.prototype.name = 'big tiger' ؛ // الطريقة الثانية var tiger = new Tiger ('Yellow') ؛ console.log (tiger.color) ؛ console.log (tiger.name) ؛تجدر الإشارة إلى أن هناك مشكلتان رئيسيتان هنا: ① ليس من المناسب نقل المعلمات إلى نوع الوالد ؛ ② تتم مشاركة الأنواع المرجعية في النوع الأصل بواسطة جميع الحالات
2) يوفر ES5 الكائن. create () لتنفيذ الميراث
- - متوافق // shim shim function create (obj) {if (object.create) {return object.create (obj) ؛ } آخر {function foo () {} foo.prototype = obj ؛ إرجاع new foo () ؛ }}هذه الطريقة هي ميزة جديدة لـ ES5 ، والتي تقوم بالفعل بنسخ وراث.
3) نسخ الميراث
var obj = {} ؛ OBJ.Extend = function (obj) {for (var k in obj) {this [k] = obj [k] ؛ }}4) ميراث مُنشئ الاقتراض - لا يتم استعارة الأعضاء الموجودين في النموذج الأولي في المنشئ المقترض
وظيفة animal (name) {this.name = name ؛} وظيفة الماوس (لقب) {animal.call (هذا ، 'mouse') ؛ this.nickname = lamname ؛} var m = mouse new ('jerry') ؛ console.log (m.name) ؛ console.log (m.nickname) ؛المشكلة الحالية: يمكن أن تحل مشكلة تمرير المعلمات في ميراث النموذج الأولي ، ولكن لا يمكن ورث الأعضاء (السمات والأساليب) على كائن النموذج الأولي في نوع الأصل
5) كائن النمط النمط الوراثي المركب ديناميكي
وظيفة الدالة (name) {this.name = name ؛} person.prototype.showname = function () {console.log (this.name) ؛} وظيفة الطالب (الاسم ، العمر) {person.call (هذا ، الاسم) ؛ هذا.[ميراث النموذج الأولي + وراثة مُنشئ الاقتراض] خاصتها هي أن نسخة واحدة من السمات لكل مثيل ، والطريقة مشتركة
[ملخص] لوضعها في جملة تقريبية للغاية ، فإن سلسلة النماذج الأولية المزعومة هي وسيلة للسلوك لإيجاد الأم ، ويمكن أن يُفهم أن البشر يولدون من قبل البشر ، وأن الشياطين يولدون من قبل الشياطين. في الواقع ، لا يوجد سوى جوهر واحد من سلسلة النموذج الأولي: مشاركة السمات والتحكم المستقل. عندما يحتاج مثيل الكائن الخاص بك إلى سمات مستقلة ، فإن جوهر جميع الممارسات هو إنشاء سمات في مثيل الكائن. إذا كنت لا تفكر كثيرًا ، فيمكنك تحديد السمات المستقلة التي تحتاجها شخصيًا لتكتب خصائص النموذج الأولي بشكل مباشر. باختصار ، عند استخدام ميراث النموذج الأولي ، يجب أن تولي اهتمامًا خاصًا للسمات في النموذج الأولي ، لأنها جميعها تؤثر على الجسم كله. الطريقة الأكثر شيوعا الآن هي وضع المركب.
1. سلسلة النموذج الأولي
1) العلاقة بين المنشئ والنموذج الأولي والمثال
① يحتوي المنشئ على نموذج أولي خاصية ، وهو كائن (مثيل لكائن). ② كائن النموذج الأولي له سمة مُنشأة ، والتي تشير إلى وظيفة المنشئ التي ينتمي إليها كائن النموذج الأولي. ③ كائن المثيل لديه سمة _proto_ ، والتي تشير أيضًا إلى كائن النموذج الأولي للمُنشئ. إنها خاصية غير قياسية ولا يمكن استخدامها للبرمجة. يتم استخدامه من قبل المتصفح نفسه. 2) العلاقة بين النموذج الأولي و _proto_
① النمط النمط هو خاصية للمقدم
②_proto_ هي سمة كائن المثيل
- كلاهما يشير إلى نفس الكائن
[ملخص] ط) الوظائف هي أيضًا كائنات ، والكائنات ليست بالضرورة وظائف ؛
2) جوهر كائن: مجموعة غير مرتبة من أزواج القيمة الرئيسية ؛ يمكن أن تكون القيم الموجودة في أزواج القيمة الرئيسية قيمًا لأي نوع من البيانات
(3) الكائن هو حاوية ، وتحتوي الحاوية (الخصائص والأساليب)
3) بحث السمة
① عند الوصول إلى أحد أعضاء الكائن ، ستبحث أولاً عما إذا كان موجودًا في الكائن.
② إذا لم يكن هناك كائن حالي ، فابحث عنه في كائن النموذج الأولي للمُنشئ
③ إذا لم يتم العثور على كائن النموذج الأولي ، ابحث عن النموذج الأولي لكائن النموذج الأولي
④ اعلم أن النموذج الأولي لكائن النموذج الأولي خالي
2. وظيفة
- جميع الوظائف هي حالات الوظيفة
① كائن محلي: كائن مستقل عن بيئة المضيف (متصفح) - بما في ذلك الكائن ، الصفيف ، التاريخ ، regexp ، الوظيفة ، الخطأ ، الرقم ، السلسلة ، منطقية
② الكائنات المدمجة - بما في ذلك الرياضيات والعالمية (النافذة ، وهو متغير عالمي في JS) ، والجديد غير مطلوب عند استخدامه.
كائن مضيف - بما في ذلك الكائنات المخصصة ، DOM ، BOM
ما سبق هو الوصف الكامل لكيفية فهم سلسلة النموذج الأولي JS الذي تم تقديمه لك. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!