this المعجمي مقابل الديناميكي، ومراجعة الدوال السهمية
شاهدوا كيف يعتمد this الديناميكي على موضع الاستدعاء، وكيف تلتقط الدوال السهمية this المعجمي؛ واستخدموا أمثلة صغيرة واضحة
this المعجمي مقابل الديناميكي، ومراجعة الدوال السهمية درس مجاني في JavaScript Academy على CoddyKit. هذا هو الدرس 1 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في JavaScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة JavaScript Academy 3 دروس في المجموع.
الصورة العامة
الهدف: معرفة الموضع الذي يشير إليه this.
- this الديناميكي: يُحدَّد حسب موضع الاستدعاء
- this في الدوال السهمية: يُلتقط من النطاق المعجمي
- مشكلة شائعة: استخراج الطريقة يفقد this
- استخدم الدوال السهمية للحفاظ على this داخل دوال ردّ النداء

عرض توضيحي لـ this الديناميكي
this الديناميكي: يؤدي الاستدعاء بالشكل obj.method() إلى تعيين this = obj؛ أما استخراج الدالة فيفقد الكائن.
// Dynamic this depends on HOW we call the function
const person = {
name: "Ayla",
say: function () {
return "Hi " + this.name;
}
};
console.log("method call:", person.say()); // "Hi Ayla"
// Extract then call: this is lost
const talk = person.say;
console.log("extracted call:", talk()); // likely "Hi undefined" in strict mode -> this is undefined

الدالة السهمية = this معجمي
تأخذ الدالة السهمية قيمة this من نطاق الدالة أو الكائن المحيط عند إنشائها؛ ولا تغيّرها وقت الاستدعاء.
// Arrow functions capture this from where they are created
const box = {
label: "blue",
showLater: function () {
// Arrow keeps this === box
const fn = () => "box:" + this.label;
return fn();
}
};
console.log("arrow captured this:", box.showLater()); // "box:blue"

دوال ردّ النداء: حافظ على this باستخدام الدوال السهمية
في دوال ردّ النداء، تفقد الدالة العادية غالبًا قيمة this؛ بينما تحافظ الدالة السهمية على قيمة this الخارجية كما هي.
// Using a normal function in a callback can lose this
const widget = {
id: 7,
normal: function () {
setTimeout(function () {
// here this is not widget in many environments
console.log("normal cb this.id:", this && this.id);
}, 0);
},
arrow: function () {
setTimeout(() => {
// arrow keeps lexical this from arrow()
console.log("arrow cb this.id:", this.id);
}, 0);
}
};
widget.normal();
widget.arrow();

حل بسيط عند استخراج الدالة
إذا استُخرجت طريقة، فلفّها بدالة سهمية صغيرة تحتفظ بالكائن، أو اربطها باستخدام bind (في الدرس التالي). أبقِ الحل بسيطًا للمبتدئين.
// If you must extract, wrap with an arrow capturing the object
const account = {
owner: "Mila",
label: function () { return "Owner:" + this.owner; }
};
// Lost this:
const lost = account.label;
console.log("lost:", lost()); // "Owner:undefined" (this missing)
// Fixed: create an arrow that closes over account
const safe = () => account.label();
console.log("fixed via arrow wrapper:", safe());

ممارسات جيدة
نصائح:
- الطرائق: استدعها باستخدام obj.method() حتى يكون this هو الكائن.
- دوال ردّ النداء: فضّل الدوال السهمية للحفاظ على this المعجمي.
- تفقد الطرائق المستخرجة قيمة this؛ فلفّها بدالة سهمية أو اربطها.

اختبار this في الدوال السهمية
فحص سريع: سلوك this في الدوال السهمية.

مراجعة
مراجعة: تكون قيمة this ديناميكية في الدوال العادية (يحددها موضع الاستدعاء)، ومعجمية في الدوال السهمية (تُلتقط عند إنشائها). استخدم الدوال السهمية في دوال ردّ النداء، ولفّ الطرائق المستخرجة للحفاظ على سلوك بسيط.

الأسئلة الشائعة
هل درس «this المعجمي مقابل الديناميكي، ومراجعة الدوال السهمية» مجاني؟
نعم — نص درس «this المعجمي مقابل الديناميكي، ومراجعة الدوال السهمية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة JavaScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة JavaScript Academy 3 دروس في المجموع.
ماذا ستتعلم في «this المعجمي مقابل الديناميكي، ومراجعة الدوال السهمية»؟
شاهدوا كيف يعتمد this الديناميكي على موضع الاستدعاء، وكيف تلتقط الدوال السهمية this المعجمي؛ واستخدموا أمثلة صغيرة واضحة تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ JavaScript Academy؟
لا تُشترط خبرة سابقة. JavaScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 3.
كم من الوقت يستغرق درس «this المعجمي مقابل الديناميكي، ومراجعة الدوال السهمية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس JavaScript Academy هذا؟
نعم. كل درس في JavaScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- this المعجمي مقابل الديناميكي، ومراجعة الدوال السهمية
- مطبات استخراج methods والتطبيق الجزئي
- بدائل البرمجة الوظيفية — تمرير السياق والإغلاقات والمساعدات الصغيرة