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` بشكل عام، ومتى يكون من الأفضل تمرير المتغيرات مباشرة؟