اتذكر أنني في بداية تعلمي الجافاسكربت، كلما مررت بكلمة الـ prototype أو الـ __proto__ كنت اتجاهل الموضوع أو ابتعدت عنه، اتذكر وقتها أن كلمة مثل الـ prototype أو الـ __proto__ كانت مثل الطلامس والمتاهات بالنسبة لي، وكنت أظن أنني لست بحاجة إلى فهم ماهية الـ prototype هذا، وكنت كثيرا أقول سوف افهم الـ prototype والـ __proto__ في وقت لاحق، ولا اعرف لماذا تجاهلت تعلم وفهم الـ protot
عندما نتحدث عن الكائن الـ object في الجافاسكربت، فنحن نتحدث عن ركن ركيز من أركان الجافاسكربت، فنحن نعرف أن معظم الأشياء في الجافاسكربت هي بالأساس الأول عبارة عن object، فالدوال والمصفوفات والتواريخ ومعظم الأشياء في الجافاسكربت تعتبر وليدة للـ object، ولذلك أقول أن الـ object يعد ركن ركيز من أركان الجافاسكربت.
في هذا الموضوع سوف نتحدث بشكل عام عن بعض الطرق الشائعة للتعامل مع ال
كل من الدالة call ودالة apply ودالة bind في الجافاسكربت متشابهون إلى حد كبير، والفروقات بينهم صغيرة، ولو تعرفت على أي منهم تستطيع بسهولة أن تتعرف على الدالتين الأخرتين، دعونا في البداية نبدأ بالدالة call، ما هي الدالة call وما هي وظيفتها؟
Call Function
الدالة call هي دالة معرفة مسبقا في لغة الجافاسكربت، وهي دالة تتبع الكائن Function وبالتالي أي دالة تقوم بتعريفها تأخذ كل خصائص
بعدما تحدثنا بشكل مفصل عن كل من الـ classical inheritance والـ prototypal inheritance في الجافاسكربت، الآن يأتي دور الحديث عن الفرق بين كل منهما. قلنا سابقا أن كل منهما يعتمد على سلسلة الـ prototpe والاختلاف الجوهري يكمن في تركيبة وشكل هذه السلسلة، وبالتالي إذا علمت شكل سلسلة الـ prototype في كل من النوعين بشكل دقيق، تستطيع بكل سهولة أن تستخرج مميزات وعيوب كل منها، وفي أي الحال
قبل الحديث عن الوارثة في الجافاسكربت، دعونا نتحدث سريعا عن الوراثة بشكل عام، حيث أن الوراثة تعد أحد الأركان الرئيسية في البرمجة الكائنية التوجيه "object oriented programming"، والوراثة بكل بساطة هي عملية يتم من خلالها توريث خصائص ووظائف من كائن إلى أخر. وهذه العملية تساعدنا كثيرا في الحصول على أكواد نظيفة ومرتبة وقابلة للاستخدام أكثر من مرة.
لو فرضنا أننا بصدد برمجة
قبل الحديث عن أي شيء يخص الجافاسكربت في هذا الصدد، علينا أولا أن نتحدث عن المفهوم بشكل عام، الـ object oriented مفهوم أو نظرية أو فكرة يمكن تطبيقها في أي لغة برمجة، هي ليست معنية بلغة واحدة عن باقي اللغات. الـ object oriented programming تعني باللغة العربية البرمجة الكائنية التوجيه، وهناك من يطلق عليها برمجة الكائنات الموجهة، وغالبا ما يُشار إليها بالـ oop، فما هي البرمجة
قبل أن نتحدث عن أي شيء يخص الـ design patterns دعونا في البداية نحكي قصة رمزية نبدأ بها موضوعنا. كانت لدينا قطعة أرض نريد أن نبني عليها عمارة سكنية، فقمنا بمخاطبة بعض المهندسين المعماريين الاكفاء لكي يرسموا لنا تصميم هذه العمارة. هؤلاء المهندسون مختلفون تماما من حيث الجامعات التي درسوا بها، والشركات التي عملوا بها، وكل منهم لا يعرف الأخر. وطلبنا من كل مهندس على حدة أن ينشئ لنا