في معظم لغات البرمجة الموجهة للكائنات، يكون للكلمة الرئيسية "هذا" معنى خاص. عادةً ما تشير إلى أن الكائن هو سياق التنفيذ (أي إلى المثيل الحالي للكائن). على سبيل المثال، نستخدم هذه الكلمة عند الإشارة إلى خاصية كائن من الداخل: نكتب this.propertyName، ويكون السياق هو الكائن وهذا يشير إليه.
'هذا'في JavaScript
في JavaScript الأمر أكثر تعقيدًا لأنه حيث هذا لا يعتمد فقط على كيفية تعريف الدالة ولكن أيضًا على شكل استدعائها.
ألق نظرة على كيفية هذا يعمل حسب مكان الاستدعاء وشكله.
السياق العالمي
يُستخدم في سياق عام مرتبط بالكائن العام، مثل النافذة في متصفح الويب.
هذا؛ // النافذة
طريقة الكائن الداخلي
يُستخدم داخل أسلوب كائن مرتبط بأقرب كائن مرفق. الكائن هو السياق الجديد لـ هذا كلمة رئيسية. لاحظ أنه لا يجب عليك تغيير الدالة () إلى بناء جملة ES6 مرح: () => هذا السياق: () => هذا السياق لأنه سيغير السياق.
تُستخدم داخل دالة ليس لها سياق (ليس لها كائن كأصل) مرتبطة بالسياق العام، حتى لو كانت الدالة مُعرّفة داخل الكائن.
لاحظ أننا نستخدم متغير السياق بدلاً من السماح/سياق السياق لأن دعنا و تشكل تغيير السياق المتغير المرفق المتغير. فار دائمًا الأقرب إلى سياق التنفيذ العام. دعنا و تشكل إعلان المتغيرات في نطاق كتلة محلية فقط.
استدعاء() و تطبيق() هي JavaScript الدوال. باستخدام هذه الدوال، يمكن للكائن استخدام أساليب تنتمي إلى كائن آخر. استدعاء() يأخذ الوسيطات بشكل منفصل حيث تطبيق() يأخذها كمصفوفة.
هذا مرتبط هنا بالسياق الجديد المتغير في استدعاء() و تطبيق() الأساليب.