أعتقد أن كل شخص لديه آرائهم الخاصة حول ما إذا كانت JavaScript هي لغة موجهة نحو الكائن أو لغة موجهة نحو الكائن. يجب على هؤلاء المشجعين المؤمنين لجافا سكريبت أن يقولوا أن جافا سكريبت هي لغة موجهة نحو الكائن. على سبيل المثال ، يعتمد بيان حول JavaScript في كتاب "The Return of the King of JavaScript" على النموذج الأولي الموجهة للكائنات. اسمحوا لي أن أتحدث عن رأيي الشخصي. الميزات الثلاثة الموجهة للكائن: الميراث ، تعدد الأشكال ، والتغليف. على الرغم من أن JavaScript ليس بالسرعة مثل اللغات الموجهة للكائنات مثل Java و C#، إلا أنه يتمتع أيضًا بدعم معين بعد كل شيء. لذلك ، من المنطقي أن نقول أن JavaScript هي لغة موجهة نحو الكائن ، ولكن من جزء الميراث ، هناك سلسلة من طرق الميراث ، لكن كل طريقة ميراث لا يمكن أن تدرك قوة لغة موجهة نحو الكائن حقًا. لذلك ، من المسلم به أن نقول أنه موجه نحو الكائن. باختصار ، فهمي لـ JavaScript هو أكثر استعدادًا للاتصال بها على الكائنات المبسطة الموجهة للكائنات ، أو "الكلمة الزائفة" (هذه الكلمة الزائفة ليس لها معنى مهين).
اليوم ، دعنا نتحدث عن الميزة الأولى من الموجهة نحو الكائنات: الميراث.
ما هو الميراث؟ لا أريد أن أتحدث عن هراء حول هذا. هناك حيوان وشخص وفتاة. هذا هو أبسط سلسلة الميراث النموذجية.
في الكائنات الموجهة مثل C#، الأمر سهل.
نسخة الكود كما يلي:
حيوان فئة
{}
شعب الطب: حيوان
{}
الفتاة الصف: الناس
{}
لذلك في JavaScript ، لا يوجد فئة أو ميراث لتوفير التنفيذ ، ماذا يجب أن نفعل؟
تمويه الكائن (طريقة وراثة البناء)
ما هو كائن التمويه؟ ما يمكن أن نسميه بنية الميراث أسهل في الفهم. كما يوحي الاسم ، فهو استخدام المنشئين للعب مع الميراث. في الواقع ، فهذا يعني أن مُنشئ الفئة الأصل يعتبر طريقة عادية ويضعه في مُنشئ الفئة الفرعية للتنفيذ. وبهذه الطريقة ، عند إنشاء كائن ، يمكن للكائن الفرعي بالطبع إنشاء طريقة الفئة الأصل!
دعونا نستخدم المثال أعلاه ، الرمز كما يلي:
نسخة الكود كما يلي:
وظيفة الحيوان ()
{
this.run = function () {Alert ("I Can raun") ؛} ؛
}
وظيفة الناس (الاسم)
{
// هنا ، يتم تمرير طريقة بناء الفئة الأصل ، ثم يتم تنفيذ طريقة بناء الفئة الأصل. في هذا الوقت ، يمكن استخدام الأساليب في الفئة الأصل.
this.father = Animal ؛
this.father () ؛
// تذكر حذفها ، وإلا عند إضافة الفئة الفرعية إلى الطريقة بنفس اسم الفئة الأصل ، سيتم تعديلها إلى الفئة الأصل.
حذف هذا.
this.name = name ؛
this.say = function () {Alert ("اسمي"+this.name) ؛}
}
وظيفة الفتاة (الاسم ، العمر)
{
this.father = الناس ؛
this.father (name) ؛
حذف هذا.
this.age = العمر ؛
this.introduce = function () {Alert ("اسمي"+this.name+". i am"+this.age) ؛} ؛
}
وبهذه الطريقة ، يتم تنفيذ سلسلة الميراث ، والاختبار هو:
نسخة الكود كما يلي:
var a = new Animal () ؛
A.Run () ؛
var p = أشخاص جدد ("Windking") ؛
P.Run () ؛
P.Say () ؛
var g = فتاة جديدة ("Xuan" ، 22) ؛
G.Run () ؛
G.Say () ؛
G.Introduce () ؛
النتائج كما يلي:
أ.
ب.
ج.
د.
ه.
و.
نجح الاختبار!
دعنا نلخص مفتاح هذا الرمز ، وتحديد الفئة الأصل ، ونعلن كائن الفئة الأصل ، ثم حذف المتغيرات المؤقتة. هل تعتقد أنه مزعج بعض الشيء؟ على الأقل هذا ما أعتقد. بمجرد أن أنسى حذف ، يجب أن تحمل خطر تعديل فئة الوالدين. لهذا ، نستخدم المكالمة ونطبق لتحسين هذا!
دعونا نلقي نظرة على الكود ، والمثال أعلاه (لتسهيل على الجميع فهمه ، والحاجة إلى تغييره ، والحيوان له اسم):
نسخة الكود كما يلي:
وظيفة الحيوان (الاسم)
{
this.run = function () {Alert ("I Can raun") ؛} ؛
}
وظيفة الناس (الاسم)
{
// استخدم طريقة الاتصال لتنفيذ الميراث
this.father = Animal ؛
this.father.call (هذا ، الاسم) ؛
this.name = name ؛
this.sayname = function () {Alert ("اسمي"+this.name ؛) ؛} ؛
}
وظيفة الفتاة (الاسم ، العمر)
{
// استخدم طريقة التطبيق لتنفيذ الميراث
this.father = الناس ؛
this.father.apply (هذا ، صفيف جديد (اسم)) ؛
this.age = العمر ؛
this.introduce = function () {Alert ("اسمي"+this.name+". i am"+this.age) ؛} ؛
}
باستخدام نفس رمز الاختبار ، وجد أن الاختبار كان ناجحًا تمامًا.
إذا كنت مبتدئًا ، فقد تشعر بالدوار قليلاً عندما تنظر إلى الرموبين أدناه. ما هي المكالمة وما الذي ينطبق؟ حسنًا ، في الموضوع الخاص لميراث Wanzhuan ، أضفت سلسلة إصدار تكميلية. إذا كنت لا تفهم هذا ، فيمكنك قراءة مقالتي: "Word of Wanzhuan: اتصل وتطبيق".
تمويه الكائن هو مجرد وسيلة لتنفيذ الميراث. في المقالة التالية ، سأستمر في الكتابة عن أساليب الميراث الأخرى ومزايا وعيوب العديد من طرق الميراث. مرحبًا بك لمواصلة الاهتمام.