سيكون لكل كائن في JavaScript نموذجًا أوليًا. جربه:
نسخة الكود كما يلي:
var richard = new Object () ؛
تنبيه (typeof (richard.prototype)) ؛
والنتيجة محبط ، وما يظهر مع المتصفح غير محدد ...
ماذا يحدث هنا؟
دعونا نلقي نظرة على مثال آخر:
نسخة الكود كما يلي:
وظيفة ريتشارد () {}
تنبيه (typeof (richard.prototype)) ؛
يبدو أن المثال أعلاه يوضح أن كائنات الوظائف فقط لها نماذج أولية ، في حين أن الكائنات العامة لا تحتوي على نماذج أولية. ما هي الحقيقة؟
دعونا ننفذ جملة أخرى ونفهم:
نسخة الكود كما يلي:
var richard = new Object () ؛
تنبيه (ريتشارد .__ proto__) ؛
هل تفهم؟
في الواقع ، لدينا جميعًا سوء فهم ، وهو أن سلسلة النموذج الأولي لكائنات JavaScript هي خاصية تسمى النموذج الأولي ويمكن الوصول إليها. في الواقع ، ليس للنموذج الأولي لـ JavaScript والسمة المسمى النموذج الأولي علاقة على الإطلاق في البداية ، وهما شيئان مختلفان.
بالنسبة للكائنات العامة ، يمكننا فقط الوصول إلى النموذج الأولي الموروث من كائن الكائن من خلال سمات مثل __proto__ ؛
بالنسبة لكائن وظيفة ، عند إنشاءه ، تم تعيين النموذج الأولي لكائن الوظيفة إلى خاصية النموذج الأولي.