الوراثة النموذجية لجافا سكريبت

تعد JavaScript فريدة تمامًا في مشهد لغات البرمجة الشائعة نظرًا لاستخدامها للوراثة النموذجية. دعنا نتعرف على ما يعنيه ذلك

تعد JavaScript فريدة تمامًا في مشهد لغات البرمجة الشائعة نظرًا لاستخدامها للوراثة النموذجية.

بينما تستخدم معظم اللغات الموجهة للكائنات نموذجًا وراثيًا قائمًا على الفئة ، فإن JavaScript يعتمد علىنموذج وراثة النموذج.

ماذا يعني هذا؟

كل كائن JavaScript منفرد له خاصية تسمىprototype، مما يشير إلى كائن مختلف.

هذا الكائن المختلف هونموذج الكائن.

يستخدم كائننا هذا النموذج الأولي للكائن لوراثة الخصائص والأساليب

لنفترض أن لديك كائنًا تم إنشاؤه باستخدام البنية الحرفية للكائن:

const car = {}

أو واحدًا تم إنشاؤه باستخدامnew Objectبناء الجملة:

const car = new Object()

على أي حال ، فإن النموذج الأولي لـcarيكونObject:

إذا قمت بتهيئة مصفوفة ، فهذا كائن:

const list = []
//or
const list = new Array()

النموذج الأوليArray.

يمكنك التحقق من ذلك عن طريق التحقق معObject.getPrototypeOf()و الObject.prototype.isPrototypeOf()أساليب:

const car = {}
const list = []

Object.getPrototypeOf(car) === Object.prototype Object.prototype.isPrototypeOf(car)

Object.getPrototypeOf(list) === Array.prototype Array.prototype.isPrototypeOf(list)

جميع خصائص وأساليب النموذج الأولي متاحة للكائن الذي يحتوي على هذا النموذج الأولي:

Object.prototypeهو النموذج الأساسي لجميع الكائنات:

Object.getPrototypeOf(Array.prototype) == Object.prototype

إذا كنت تتساءل ما هو النموذج الأولي للنموذج الأولي Object.Protot ، فلا يوجد نموذج أولي: إنهnull. إنها ندفة ثلجية خاصة ❄️.

المثال أعلاه الذي رأيته هو مثال علىسلسلة النموذج الأوليفي العمل.

يمكنني إنشاء كائن يمتد إلى Array وأي كائن أقوم بإنشاء مثيل له باستخدامه ، سيكون به Array and Object في سلسلة النموذج الأولي الخاص به ويرث الخصائص والطرق من جميع الأسلاف.

بالإضافة إلى استخدام ملفnewعامل التشغيل لإنشاء كائن ، أو باستخدام الصيغة الحرفية للكائنات والمصفوفات ، يمكنك إنشاء مثيل لكائن باستخدامObject.create().

الوسيطة الأولى التي تم تمريرها هي الكائن المستخدم كنموذج أولي:

const car = Object.create({})
const list = Object.create(Array)

انتبه لأنه يمكنك إنشاء مثيل لمصفوفة باستخدام

const list = Object.create(Array.prototype)

وفي هذه الحالةArray.isPrototypeOf(list)غير صحيح ، بينماArray.prototype.isPrototypeOf(list)صحيح.


المزيد من دروس js: