مع تطور العصر، ظهرت المزيد والمزيد من الأطر الممتازة في معسكر جافا سكريبت، مما يبسط عملنا التطويري إلى حد كبير. عندما نستخدم هذه الأطر، هل يجب علينا أيضًا التفكير في أصولها والتفكير في كيفية بنائها؟ إذا لم تكن راضيًا عن استخدام بعض واجهات برمجة التطبيقات الجاهزة فقط، ولكن لديك فهم عميق لآليات التنفيذ الداخلي الخاصة بها (وفقًا لشخص ما، فإن واجهات برمجة التطبيقات هي أسرع الأشياء استهلاكًا)، فإن أفضل طريقة هي قراءة كود المصدر الخاص بها أنه يمكنك قراءتها.
لقد قمت بدراسة الكود المصدري لـ jQuery في اليومين الماضيين، وهنا سأشارك بعض معرفتي السطحية، يرجى تصحيحي إذا كنت غير مناسب. حسنًا، دعنا نلقي نظرة على كيفية عمل jQuery. أفترض أن لديك بالفعل بعض المعرفة الأساسية بجافا سكريبت. إذا لم تكن الأساسيات كافية، أنصحك بقراءة كتابي "برمجة جافا سكريبت المتقدمة" وكتاب "فهم جافا سكريبت". هذه المقالة غير مناسبة للأصدقاء الذين لا يفهمون مفاهيم مثل الفئات والكائنات والوظائف والنماذج الأولية وما إلى ذلك في JS.
لنبدأ من البداية:
قم أولاً بإنشاء كائن للمستخدم، بافتراض أن إطار العمل الخاص بنا يسمى Shaka (اسمي ;)) )
var Shaka = function(){}; هنا نقوم بإنشاء دالة فارغة لا تحتوي على أي شيء. لكي يتمكن الكائن الذي نقوم بإنشائه من استدعاء الأساليب المحددة في النموذج الأولي، نحتاج إلى إضافة بعض الأساليب إلى Shaka باستخدام النموذج الأولي (فكر في Shaka كفئة)، لذلك نحدد:
Shaka.fn = Shaka.prototype = {};
Shaka.fn هنا يعادل الاسم المستعار Shaka.prototype للاستخدام المستقبلي، ويشيران إلى نفس المرجع.
حسنًا، دعنا نضيف طريقة sayHello ونضيف معلمة إلى Shaka، بحيث يكون المظهر الأساسي لهذا الإطار موجودًا بالفعل، وإذا كان حيًا، فقد أصبح عمره الآن عامًا واحدًا.
تشغيل مربع التعليمات البرمجية
[Ctrl+A تحديد كافة النصائح: يمكنك تعديل جزء من الكود أولاً ثم الضغط على تشغيل]
حسنًا، لا تتحمس، لاحظنا أن هناك بعض الاختلافات في استخدام هذا الإطار وjQuery، على سبيل المثال، في jq يمكننا الكتابة على النحو التالي:
jQuery('#myid').someMethod();
كيف يتم ذلك، أي أن مُنشئ jQuery() يُرجع مثيل كائن jQuery، حتى نتمكن من استدعاء طريقته عليه، لذلك يجب أن يُرجع مُنشئ Shaka مثيلًا، ويجب أن يبدو كما يلي:
var Shaka = function(){ return // إرجاع مثيل Shaka };
إذن، كيف نحصل على مثيل Shaka؟ لنراجع أولاً كيفية استخدام النموذج الأولي لمحاكاة فئة ما var someObj = new MyClass(); دالة MyClass، وهي منشئ الفئة، ثم يحصل someObj على الأساليب المحددة في MyClass.prototype. يشير هذا المؤشر في هذه الأساليب إلى مثيل الكائن الحالي.