في جافا سكريبت، لماذا عامل التشغيل "هذا" غير متناسق؟
في جافا سكريبت، يُظهر عامل التشغيل "هذا" سلوكًا متنوعًا اعتمادًا على سياق الاستدعاء. يمكن أن يؤدي هذا إلى ارتباك ونتائج غير متوقعة، خاصة عند العمل مع عمليات الاسترجاعات والكائنات.
أنماط الاستدعاء والربط "هذا"
يرتبط عامل التشغيل "هذا" بـ الكائن أو الفئة أثناء استدعاء الوظيفة، ويتم تحديد هذا الربط من خلال نمط الاستدعاء:
معضلة رد الاتصال
تنشأ المشكلة عند استدعاء رد اتصال الأسلوب كدالة. نظرًا لعدم استدعاء عمليات الاسترجاعات كطرق، يشير "هذا" إلى النطاق العام بدلاً من الكائن الذي كان المقصود منه في الأصل.
أفضل الممارسات
استراتيجية واحدة للمحافظة عليها الاتساق في الربط "هذا" ضمن عمليات الاسترجاعات هو استخدام "var that = this;" نمط. يؤدي هذا إلى تعيين مرجع إلى "هذا" (الكائن) إلى متغير جديد (ذلك)، والذي يمكن بعد ذلك استخدامه ضمن رد الاتصال.هناك طريقة أخرى موصى بها وهي تبني جانب البرمجة الوظيفية لجافا سكريبت وتجنب الاعتماد على الفئات. وأنماط الميراث. باستخدام وظائف خالصة ووظائف ذات ترتيب أعلى، يمكنك فصل المنطق عن حالات الكائن وتحقيق تعليمات برمجية أكثر نمطية ويمكن التنبؤ بها.بالإضافة إلى ذلك، فكر في استخدام إطار عمل جافا سكريبت الذي يوفر آليات للتعامل مع الارتباط "هذا" والكائن- البرمجة الموجهة بطريقة متسقة. تذكر أن تقوم بمراجعة الوثائق والمراوغات الخاصة بإطار العمل بعناية لتجنب السلوك غير المتوقع.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3