__proto__ هو نموذج أولي داخلي ، والنموذج الأولي هو نموذج أولي مُنشئ (مُنشئ هو في الواقع وظيفة)
النموذج الأولي للمُنشئ هو كائن
إذن ما هو المنشئ؟
لإنشاء كائن ، يجب أن يكون لديك أولاً مُنشئ كائن ، تمامًا كما في PHP. لإنشاء كائن ، يجب أن يكون لديك أولاً فئة
جوهر المنشئ هو وظيفة. السؤال التالي هو: كيفية إنشاء كائن من خلال هذا المُنشئ؟
الجواب: جديد
البناء بنيت كائن.
1.
نسخة الكود كما يلي:
رقم .__ proto__ === وظيفة. النموذج
// حقيقي
Boolean .__ proto__ === وظيفة. النموذج
// حقيقي
سلسلة .__ proto__ === وظيفة. النموذج
// حقيقي
كائن .__ proto__ === وظيفة. النموذج
// حقيقي
وظيفة .__ proto__ === وظيفة. النموذج
// حقيقي
صفيف .__ proto__ ===
function.prototype
// حقيقي
regexp .__ proto__ === function.prototype
// حقيقي
خطأ .__ proto__ ===
function.prototype
// حقيقي
التاريخ .__ proto__ ===
function.prototype
// حقيقي
هذا يدل على أن العدد والمُنشئين الآخرين هم في الواقع كائنات من الوظائف. وهذا يعني أنه يعادل رقم var = وظيفة جديدة () ؛
يوجد 12 مُنشئًا/كائنات مدمجة في JavaScript (تتم إضافة JSON حديثًا في ES5) ، وهنا 8 منشئات يمكن الوصول إليها. الباقي هو أنه لا يمكن الوصول إلى Global مباشرة ، يتم إنشاء الوسائط فقط بواسطة محرك JS عندما توجد مكالمات الوظائف ، والرياضيات و JSON في شكل كائن ، دون جديد. __proto__ هو object.prototype. على النحو التالي
نسخة الكود كما يلي:
الرياضيات .__ proto__ === Object.prototype
// حقيقي
json .__ proto__ === object.prototype
// حقيقي
من المؤكد أن "جميع البنائين/الوظائف" المذكورة أعلاه تتضمن بالتأكيد تلك المخصصة. على النحو التالي
نسخة الكود كما يلي:
// إعلان الوظيفة
وظيفة الشخص ()
{}
// تعبير الوظيفة
فار مان
=
وظيفة()
{}
console.log (person .__ proto__ === function.prototype)
// حقيقي
console.log (man .__ proto__ ===
function.prototype)
// حقيقي
ماذا يعني هذا؟
جميع المنشئات تأتي من function.prototype ، وحتى تشمل كائن منشئ الجذر والوظيفة نفسها. جميع المنشئين يرثون خصائص وطرق الوظيفة. النمط. مثل الطول ، الاتصال ، تطبيق ، ربط (ES5).
Function.Prototype هو أيضًا النموذج الأولي الوحيد مع النموذج XXX.Prototype كـ "دالة". النماذج الأولية للمصممون الآخرون كلها كائنات. على النحو التالي
نسخة الكود كما يلي:
console.log (typeof function.prototype)
// وظيفة
console.log (typeof object.prototype)
// هدف
console.log (typeof number.prototype)
// هدف
console.log (typeof boolean.prototype)
// هدف
console.log (typeof string.prototype)
// هدف
console.log (typeof array.prototype)
// هدف
console.log (typeof regexp.prototype)
// هدف
console.log (typeof error.prototype)
// هدف
console.log (typeof date.prototype)
// هدف
console.log (typeof object.prototype)
// هدف
أوه ، وذكر أعلاه أيضًا أنها وظيفة فارغة ، ألق نظرة عليها تحت التنبيه (function.prototype).
أعلم أن جميع المُنشئين (بما في ذلك المدمج والعرف) هي وظيفة.
أعتقد أن الجميع سمعوا أن الوظائف في JavaScript هم أيضًا مواطنون من الدرجة الأولى ، فأين يمكن أن ينعكس؟ على النحو التالي
نسخة الكود كما يلي:
console.log (function.prototype .__ proto__ ===
Object.Protype)
// حقيقي
هذا يدل على أن جميع المُنشئين هم أيضًا كائنات JS عادية ، ويمكنهم إضافة/حذف السمات ، وما إلى ذلك إلى المُنشئ. في الوقت نفسه ، يرث أيضًا جميع الأساليب على الكائن.
من هو __proto__ من Object.prototype؟
نسخة الكود كما يلي:
Object.prototype .__ proto__ ===
باطل //
حقيقي
لقد وصلت بالفعل إلى القمة ، من أجل NULL.
هل لديك أي فهم للفرق بين __proto__ والنموذج الأولي في JavaScript؟ إذا كان لديك أي أسئلة ، اترك رسالة ودعنا نناقشها معًا