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

this في استدعاء الطريقة
في استدعاء الطريقة، تشير this إلى الكائن الموجود قبل النقطة.
// Method call: this is the object before the dot
const user = {
name: "Ayla",
say() {
console.log("I am", this.name);
}
};
user.say();

this في الاستدعاء العادي
في الاستدعاء العادي تكون قيمة this هي undefined في الوضع الصارم. أما في المتصفحات التي لا تستخدم الوضع الصارم، فقد تكون هي window.
// Plain function call: this is undefined in strict mode
function show() {
console.log("this is", this);
}
show();

this في الدوال السهمية (معجميًا)
تستخدم الدالة السهمية قيمة this الخارجية (معجميًا). وهذا مناسب جدًا لعمليات الاستدعاء اللاحقة داخل الطرق.
// Arrow functions do not have their own this
// They capture this from the surrounding scope
const team = {
title: "Blue",
start() {
const report = () => {
console.log("Team:", this.title);
};
report();
}
};
team.start();

call مقابل apply
ينفّذ call وapply الدالة فورًا باستخدام قيمة this المعطاة.
// call/apply invoke the function with a chosen this
function intro(lang1, lang2) {
console.log("User:", this.name, "knows", lang1, "and", lang2);
}
const person = { name: "Mina" };
// call passes arguments normally
intro.call(person, "JS", "TS");
// apply passes arguments as an array
intro.apply(person, ["JS", "TS"]);

أساسيات bind
يعيد bind دالة جديدة تتذكر قيمة this المختارة للاستدعاءات المستقبلية.
// bind creates a new function with this fixed
function sayHi() {
console.log("Hi from", this.name);
}
const dev = { name: "Lena" };
const sayHiFromLena = sayHi.bind(dev);
sayHiFromLena();
sayHiFromLena();

اختبار bind مقابل call/apply
تحقق سريع: تثبيت قيمة this.

مراجعة
مراجعة: تعيّن استدعاءات الطرق قيمة this إلى الكائن، وتكون قيمة this في الاستدعاءات العادية هي undefined في الوضع الصارم، بينما تلتقط الدوال السهمية قيمة this الخارجية؛ ويعيّنها call/apply لاستدعاء واحد، ويثبّتها bind للاستدعاءات اللاحقة.

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