JavaScript هي اللغة الوحيدة المستخدمة على نطاق واسع لميراث النماذج الأولية ، لذلك يستغرق الأمر بعض الوقت لفهم الاختلافات بين طريقتي الميراث.
الاختلاف الرئيسي الأول هو أن JavaScript يستخدم سلاسل النموذج الأولي للورث:
الدالة foo () {this.value = 42 ؛} foo.prototype = {method: function () {}} ؛ function bar () {}قم بتعيين النموذج الأولي للبار على مثيل كائن فو:
bar.prototype = new foo () ؛ bar.prototype.foo = 'hello world' ؛
تأكد من أن مُنشئ الشريط هو نفسه وإنشاء مثيل كائن شريط جديد:
bar.prototype.constructor = bar ؛ var test = new bar () ؛
دعونا نلقي نظرة على تكوين سلسلة النموذج الأولي بأكمله:
اختبار [مثيل الشريط] bar.prototype [مثيل foo] {foo: 'hello world'} foo.prototype {method: ...} object.prototype {toString: ... / * etc. * /}في المثال أعلاه ، سيرث اختبار الكائن كل من bar.prototype و foo.prototype. لذلك يمكنه الوصول إلى طريقة الوظيفة المحددة في FOO. بالطبع ، يمكنه أيضًا الوصول إلى قيمة العقار. تجدر الإشارة إلى أنه عند عدم إنشاء شريط جديد () ، يتم إعادة استخدام مثيل FOO جديد ، ولكن مثيل FOO الذي يأتي مع كائن النموذج الأولي الخاص به. وبالمثل ، تشترك جميع مثيلات الشريط في نفس سمة القيمة. لنقدم أمثلة:
test1 = new bar () ؛ test2 = new bar () ؛ bar.prototype.value = 41 ؛ Test1.value // 41 Test2.Value // 41
آلية بحث سلسلة النموذج الأولي
عند الوصول إلى خصائص الكائن ، ستجتاز JavaScript سلسلة النموذج الأولي بأكمله من الكائن نفسه حتى يجد الخصائص المقابلة. إذا وصلت إلى الجزء العلوي من سلسلة النموذج الأولي ، وهو الكائن.
خصائص كائنات النموذج الأولي
على الرغم من أن خصائص كائن النموذج الأولي تستخدم بواسطة JavaScript لإنشاء سلسلة النموذج الأولي ، إلا أنه لا يزال بإمكاننا تعيين قيم لها. لكن نسخ القيمة الأصلية إلى النموذج الأولي غير صالح ، مثل:
دالة foo () {} foo.prototype = 1 ؛ // لا تأثيرفيما يلي إلهاء من هذه المقالة ويقدم ما هي القيمة الأصلية:
في JavaScript ، يمكن للمتغيرات تخزين نوعين من القيم ، وهما القيمة الأصلية والقيمة المرجعية.
1. القيمة البدائية:
القيم الأصلية ثابتة وقيم بسيطة ، وهي مقاطع بيانات بسيطة مخزنة في المكدس ، أي ، يتم تخزين قيمها مباشرة في الموقع الذي يتم فيه الوصول إلى المتغير.
هناك خمسة أنواع من الأنواع البدائية: غير محددة ، فارغة ، منطقية ، رقم ، سلسلة.
2. القيمة المرجعية:
القيمة المرجعية هي كائن كبير نسبيًا ، الكائن المخزن في كومة الكومة ، أي القيمة المخزنة في المتغير هي مؤشر مؤشر يشير إلى الذاكرة حيث يتم تخزين الكائن. يتم دمج جميع أنواع المرجع من الكائن.
مشكلات أداء سلسلة النموذج الأولي
إذا كانت السمات التي يمكن العثور عليها موجودة في الجزء العلوي من سلسلة النموذج الأولي ، فستكون لعملية البحث بلا شك تأثير سلبي على الأداء. سيكون هذا اعتبارًا رئيسيًا عندما تكون متطلبات الأداء ضرورية. بالإضافة إلى ذلك ، فإن محاولة العثور على خاصية غير موجودة تعبر سلسلة النموذج الأولي بأكمله.
وبالمثل ، عند عبور خصائص الكائن ، سيتم الوصول إلى جميع الخصائص على سلسلة النموذج الأولي.
لخص
إن فهم ميراث النموذج الأولي هو الشرط المسبق لكتابة رمز جافا سكريبت أكثر تعقيدًا ، ويجب عليك أيضًا الانتباه إلى ارتفاع سلسلة النموذج الأولي في الكود. عند مواجهة اختناقات الأداء ، يجب أن تتعلم تقسيم سلسلة النموذج الأولي. بالإضافة إلى ذلك ، لتمييز النموذج الأولي للكائن النموذجية عن النموذج الأولي __proto__ ، سنناقش بشكل أساسي النموذج الأولي للكائن النموذجية هنا ، ولن نوضح المشكلة حول النموذج الأولي __proto__.