ما الفرق بين "__proto__" و "prototype"؟
الاجابه 1:
ليس
- __proto__ هو النموذج الأولي الفعلي ، لكن لا تستخدمه .. كان من المفترض أن يقوم constructor.prototype بالقيام بنفس الشيء مثل __proto__ ولكن وظيفته المعطلة في الغالب. ونموذج الوظيفة الخاص به.
النموذج المبدئي
.__ proto__
__proto__
__proto__
هو في الواقع
جديد
.النموذج المبدئي
Function.prototype
__proto__
.constructor.prototype
.البناء
Object.isPrototypeOf
Object.getPrototypeOf
الاجابه 2:
يقال إن برمجة الكائنات في JavaScript "تعتمد على النموذج الأولي"
لتعريف واجهة برمجة التطبيقات الموروثة ، تقوم بإنشاء كائن نموذج أولي بطرق وربما قيم بعض الخصائص الافتراضية.
تحتوي جميع مثيلات `Function` (الدالات هي كائنات في JavaScript) على خاصية 'prototype' فارغة فارغة يمكن تمديدها أو استبدالها. إذا تم استدعاء هذه الوظيفة كمنشئ باستخدام عامل التشغيل "الجديد" ، ستصبح هذه الخاصية "النموذج الأولي" الخاصية الداخلية "[النموذج الأولي]" للحالات ، حيث سيتم البحث من واجهات برمجة التطبيقات الخاصة بهم الموروثة
يمكن أيضًا تعريف هذا النموذج الأولي ككائن جديد عادي وحقنه يدويًا:
- على كائن موجود عبر Object.setPrototypeOf () ، يُستخدم بدون وظيفة مُنشئ من خلال Object.create () ، يتجاوز خاصية النموذج الأولي للوظيفة الافتراضية عبر التأثير الحرفي ، أو Object.assign () ، أو Object.defineProperty ()
لفترة طويلة لم يكن الوصول إلى [النموذج الأولي] لكائن رسميًا للتفتيش أو التعديل. إحدى طرق القيام بذلك هي فحص خاصية "المنشئ" الموروثة للكائن ، لكن كان من الممكن تجاوزه بسهولة.
ثم قدمت Mozilla المساعد غير الرسمي __proto__.
ثم حدد TC39 (مجموعة عمل ECMAScript) واجهة تعامل API الرسمية setPrototypeOf () / getPrototypeOf ().
ثم مرة أخرى TC39 ، تحقق من __proto__ API