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

لماذا يجب استخدام "this" في دوال البناء بينما في الكلاس لا نستخدمها في جافاسكريبت؟

Mohammed Bashr Abou

السؤال

ليش لازم استعمل this في دالة البناء عند إنشاء دالة بينما في الكلاس لا ..

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

استخدام this في دالة البناء:

  1. عندما تستخدم this في دالة البناء، فإنك تخبر البرنامج أنك تريد الاشارة إلى الكائن الذي سيتم إنشاؤه.

  2. تستخدم this لتحديد أن الخصائص (متغيرات) التي تقوم بتعريفها تنتمي إلى هذا الكائن الذي تم إنشاؤه.

  3. عادة ما يتم استخدام this في لغات البرمجة مثل JavaScript وPython.

عدم استخدام this في الكلاس:

  • في اللغات التي تستخدم الكلاسات مثل Java وC++، عادةً لا تحتاج إلى استخدام this في دالة البناء.

  • يمكنك الوصول مباشرة إلى الخصائص المثبتة في الكلاس دون الحاجة إلى this.

  • عند تعريف الخصائص في دالة البناء، يعتبر البرنامج تلقائيًا أنها تنتمي إلى الكائن الحالي الذي يتم إنشاؤه.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

أرجو التعليق أسفل فيديو الدورة الخاص بالسؤال لمساعدتك بشكل أفضل، وطرح الأسئلة العامة هنا.

وبخصوص سؤالك، في جافاسكريبت، كل دالة هي كائن، بما في ذلك دالة البناء، وعندما يتم استدعاء دالة، يتم إنشاء كائن جديد لها، ويُعرف باسم المرجع.

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

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

مثال على دالة بناء تستخدم this:

function Person(name, age) {
  this.name = name;
  this.age = age;
}

const mohamed = new Person("mohamed", 30);

console.log(mohamed.name); // "mohamed"
console.log(mohamed.age); // 30

بينما في الكلاس:

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  getFullName() {
    return `${this.name} (${this.age})`;
  }
}

const mohamed = new Person("mohamed", 30);

console.log(mohamed.getFullName()); // "mohamed (30)"

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...