"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يتصرف "هذا" داخل أساليب فئة JavaScript؟

كيف يتصرف "هذا" داخل أساليب فئة JavaScript؟

تم النشر بتاريخ 2024-12-22
تصفح:222

How Does

فهم سلوك "هذا" ضمن أساليب الفصل في JavaScript

في JavaScript، يعد مفهوم "هذا" أمرًا بالغ الأهمية لفهم كيفية عمل الأساليب ضمن تعريفات الفصل. للتعمق في هذا الموضوع، دعونا نحلل العبارة التي تشير إلى أن "هذا" يشير إلى فئة المستدعي بدلاً من الكائن الذي يتم إنشاؤه عند استدعاء أساليب الفئة.

أنماط الاستدعاء والربط "هذا"

في JavaScript، هناك أربع طرق متميزة لاستدعاء الوظائف، تحدد كل منها كيفية ربط "هذا":

  1. الطريقة الاستدعاء: عندما يتم استدعاء دالة كطريقة لكائن ما، فإن "هذا" يرتبط بهذا الكائن.
  2. استدعاء الوظيفة: في استدعاءات الوظائف المستقلة، "هذا " مرتبط بالكائن العام (عادةً كائن "النافذة" في المتصفحات).
  3. استدعاء المنشئ: الوظائف يتم استدعاؤها باستخدام الكلمة الأساسية "الجديدة" وتعتبر دعوات منشئة. في هذه الحالة، يرتبط "هذا" بكائن تم إنشاؤه حديثًا.

فهم المثال الخاص بك

في مثال التعليمات البرمجية الخاص بك، ذكرت طريقة ضمن تعريف فئة تقوم بإنشاء عدة كائنات باستخدام التدوين الحرفي للكائن. ضمن هذه الكائنات، يتم استخدام مؤشر "هذا". من المحتمل أن السلوك الذي لاحظته ينبع من نمط الاستدعاء لطريقة onRender.

إذا تم استدعاء طريقة onRender الخاصة بك كطريقة لمثيل فئة (استدعاء الطريقة)، فسيشير "هذا" إلى مثيل الفئة، كما هو السلوك المرغوب . ومع ذلك، إذا تم استدعاء onRender عن غير قصد كدالة (استدعاء دالة) خارج سياق مثيل الفئة، فسيتم ربط "هذا" بالكائن العام بدلاً من مثيل الفئة المقصودة. قد يؤدي هذا إلى سلوك غير متوقع.

سبب هذا السلوك

يعد ربط "هذا" بالكائن أو الوظيفة المستدعي جانبًا أساسيًا في تصميم JavaScript. يسمح بإنشاء تعليمات برمجية ديناميكية ومرنة حيث يمكن معالجة سياق "هذا" اعتمادًا على نمط الاستدعاء.

الاستنتاج

سلوك "هذا" داخل أساليب الفصل هو نتيجة لأنماط استدعاء وظائف JavaScript. من خلال فهم كيفية ربط "هذا" في سيناريوهات مختلفة، يمكنك التحكم في السياق الذي تعمل فيه التعليمات البرمجية الخاصة بك وتجنب أي ارتباك محتمل.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3