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

لماذا عامل التشغيل \"this\" غير متسق في JavaScript وكيفية معالجته؟

تم النشر بتاريخ 2024-11-08
تصفح:455

Why is the \

في جافا سكريبت، لماذا عامل التشغيل "هذا" غير متناسق؟

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

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

يرتبط عامل التشغيل "هذا" بـ الكائن أو الفئة أثناء استدعاء الوظيفة، ويتم تحديد هذا الربط من خلال نمط الاستدعاء:

  • الطريقة: عند الاستدعاء كطريقة للكائن، يشير "هذا" إلى الكائن نفسه.
  • الوظيفة: عندما يتم استدعاؤه كدالة مستقلة، يشير "هذا" إلى النطاق العام (كائن النافذة في المتصفحات).
  • المنشئ: عند استدعاء الكلمة الأساسية "جديد"، يتم إنشاء كائن جديد، ويشير "هذا" إلى هذا الكائن.
  • تطبيق: تسمح طريقة "تطبيق" بإعداد صريح لـ "هذا" وتمرير الوسائط في مصفوفة.

معضلة رد الاتصال

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

أفضل الممارسات

استراتيجية واحدة للمحافظة عليها الاتساق في الربط "هذا" ضمن عمليات الاسترجاعات هو استخدام "var that = this;" نمط. يؤدي هذا إلى تعيين مرجع إلى "هذا" (الكائن) إلى متغير جديد (ذلك)، والذي يمكن بعد ذلك استخدامه ضمن رد الاتصال.

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

بالإضافة إلى ذلك، فكر في استخدام إطار عمل جافا سكريبت الذي يوفر آليات للتعامل مع الارتباط "هذا" والكائن- البرمجة الموجهة بطريقة متسقة. تذكر أن تقوم بمراجعة الوثائق والمراوغات الخاصة بإطار العمل بعناية لتجنب السلوك غير المتوقع.

بيان الافراج أعيد طبع هذه المقالة على: 1729561575 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3