Avatar ·

كيف تعمل الكلمة المفتاحية `this` في JavaScript ومتى يجب استخدامها؟

مرحباً بالجميع! أنا مبتدئ في JavaScript وأخلط دائماً بين استخدام الكلمة المفتاحية `this`. قرأت التوثيق لكنه يبدو معقداً جداً. لدي هذا الكود: ```javascript const user = { name: 'آنا', greet: function() { console.log('مرحباً، ' + this.name); } }; const greetFunc = user.greet; user.greet(); // يطبع "مرحباً، آنا" — يعمل! greetFunc(); // يطبع "مرحباً، undefined" — لماذا؟ ``` عندما أستدعي `user.greet()`، كل شيء يعمل. لكن عندما أحفظ الميثود في متغير وأستدعيه، يصبح `this.name` مساوياً `undefined`. لماذا يحدث هذا؟ وأيضاً: سمعت أن `this` يتصرف بشكل مختلف في arrow functions مقارنة بالدوال العادية. كيف يمكنني فهم ما سيشير إليه `this` في الكود الخاص بي؟ متى يجب استخدام `this` أصلاً، ومتى يكون من الأفضل تمرير المتغيرات مباشرة؟