JavaScript هو صوت موجه نحو الكائن ، أي أن كل شيء هو كائن.
فكيف لإنشاء كائن؟ في عالم Java ، يتم إنشاء الأشياء بواسطة مثيلات الفصل. من حيث Layman ، فإنها تجري الأشياء في قالب ويستخدمون هذا القالب (الفئة) لإنتاج كائنات حقيقية محددة (كائنات).
ومع ذلك ، لا يوجد مفهوم للطبقة في JS. بعضها "نماذج أولية" ، والكائنات مشتقة من النماذج الأولية. بعبارات Layman ، في عالم JS ، "النموذج الأولي" ليس قالبًا ، ولكنه كائن ملموس (كائن). يتم اشتقاق جميع الكائنات من كائن آخر ، وهذا الكائن المشتق هو ما يسمى "كائن النموذج الأولي".
هناك ثلاثة أنواع من الكائنات في JavaScript ، كائن واحد تم إنشاؤه للمستخدم ، كائن مُنشئ 2 ، 3 كائن النموذج الأولي
يحتوي كل من هذه الكائنات الثلاثة على سمة خاصية -_proto__ ، والتي تشير إلى النموذج الأولي للكائن ، ويمكن تتبعها إلى Object.prototype من النقطة التي يتبعها أي كائن.
يحتوي المنشئ على كائن النموذج الأولي ، والذي يشير إلى كائن النموذج الأولي. عندما يتم إنشاء الكائن من خلال هذا المُنشئ ، ستشير سمة __proto__ للكائن الذي تم إنشاؤه إلى سمة النموذج الأولي للمُنشئ.
يحتوي كائن النموذج الأولي على خاصية مُنشأة تشير إلى مُنشئها المقابل.
الحديث رخيص ، أرني الرمز! لنلقي نظرة على الكود:
var obj = {} ؛ console.log (obj) ؛دعنا نوسع __proto__ لنرى: هي بعض الأساليب الافتراضية.
سوف يحدث بالتأكيد أن هناك أيضًا كائن __proto__ في هذا الكائن __proto__. كما قلنا للتو ، يحتوي كل كائن على سمة __proto__ تشير إلى كائن النموذج الأولي الخاص بها. دعنا نطبع __proto__ في هذا __proto__:
console.log (obj .__ proto __.__ proto__) ؛ //-> NULL
والنتيجة هي فارغة ، مما يشير إلى أن كائن النموذج الأولي من المستوى الأعلى قد وصل. يتم تعريف OBJ في الأقواس {} ، وكائن النموذج الأولي لـ OBJ هو كائن المستوى الأعلى لـ JS.
دعونا نلقي نظرة على الكود على جانب واحد لتعزيز فهمنا:
var parent = {name: "parent"} ؛ var child = {name: "child" ، __proto__: parent} ؛ var subchild = {name: "subchild" ، __proto__: child} console.log (subchild) ؛