اذهب إلى المحتوى

السؤال

نشر

السلام عليكم

يوجد في الJS المعامل this الذي يستخدك بكثرة في الOOP ولدي سؤالين عنه

  1. ما هو نطاق المعامل this؟ هل هو Local ام Global ام غير ذلك؟ وكيف يمكنني معرفة نطاقه لانني اجد في كل مرة يكون لديه نطاق مختلف؟
  2. كيف يمكنني معرفة قيمته دون طباعته في الconsole؟ احيانا اطبعه ويكون يشير الى الWindow Object واحيان يشير الى معامل ما واحيانا الى قيمة متغير فكيف يمكنني معرفة قيمته؟

شكرا لكم  

Recommended Posts

  • 0
نشر

معامل "this" في JavaScript يشير إلى الكائن الذي يتم استدعاء الوظيفة منه. قيمة "this" تعتمد على كيفية استدعاء الوظيفة والسياق الذي يتم استخدامه.

نطاق معامل "this" يختلف اعتمادًا على الحالة التي يتم فيها استدعاء الوظيفة. إليك تفسير للحالات المختلفة:

  • نطاق Global: عندما يتم استدعاء الوظيفة في النطاق العام (خارج أي كائن)، فإن "this" يشير إلى كائن الـ Window في حالة تشغيل البرنامج في المتصفح.
  • نطاق Object: عندما يتم استدعاء الوظيفة من داخل كائن، فإن "this" يشير إلى الكائن نفسه. يعتبر هذا الكائن هو المحدد لـ "this" في هذه الحالة.
  • نطاق الدالة المعاكسة (Arrow Function): في حالة استخدام الدوال المعاكسة (Arrow Functions)، "this" يستمد قيمته من النطاق الذي يحتوي الدالة الخارجية للدالة المعاكسة.

يرجى الإطلاع على الإجابت والمقالة التالية للمزيد من المعلومات

 

  • 0
نشر

1- نطاق المعامل this ليس محليًا أو عالميًا أو أي شيء آخر بل يعتمد على السياق الذي يتم استخدامها فيه.

أي إذا استخدمنا this في دالة محلية، فستيشير إلى الكائن الذي تم استدعاء الدالة منه، وإذا تم استخدام this في دالة عالمية، فستيشير إلى الكائن window لأنه الكائن العالمي.

2- هناك عدة طرق لمعرفة قيمة المعامل this دون طباعته في ال console.

  • الطريقة الأولى هي استخدام دالة typeof، مثلاً حاول تجربة كتابة:
typeof this

 سيعيد نوع الكائن الذي تشير إليه this.

  • طريقة أخرى هي استخدام دالة Object.prototype.toString، فعند كتابة التالي:
Object.prototype.toString.call(this)

 سيعيد سلسلة تمثل الكائن الذي تشير إليه this.

وإليك بعض الأمثلة على كيفية استخدام المعامل this:

  • في دالة محلية، تشير this إلى الكائن الذي تم استدعاء الدالة منه، ففي المثال التالي، تشير this إلى الكائن myObject.
var myObject = {
  name: "Muhannad "
};

function myFunction() {
  console.log(this.name); // Logs "Muhannad "
}

myFunction(); // Logs "Muhannad "
  • في دالة عالمية، تشير this إلى الكائن window وفي الكود التالي، تشير this إلى الكائن window.
function myFunction() {
  console.log(this.name); // Logs "window"
}

myFunction(); // Logs "window"
  • أما في دالة كائن، تشير this إلى الكائن نفسه، وفي المثال التالي، تشير this إلى الكائن myObject.
const myObject = {
  name: "Muhannad ",
  myFunction: function() {
    console.log(this.name); // Logs "Muhannad "
  }
};

myObject.myFunction(); // Logs "Muhannad "

وكنصيحة لتفهم طبيعة كلمة this عليك أن تفهم ماذا يعني الـ prototype في جافاسكريبت فهى نقطة هامة وأساسية في اللغة يغفل عنها الكثير.

وقد قمت بشرح الأمر بشكل مفصل هنا:

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...