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

السؤال

Recommended Posts

  • 0
نشر

مرحبًا،

تستعمل new لإنشاء كائن جديد، و هي ليست موجودة في كافة لغات البرمجة، مثلًا بايثون لا تحوي على هذه التعليمة، بينما تحتوي جافا سكربت عليها.

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

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

const p = new Person('Omar', 25, 'male');

console.log(p.name);
// Expected output: "Omar"

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

تحياتي.

  • 0
نشر

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

بخصوص سؤالك، يجب أولاً توضيح أن البرمجة الكائنية في جافاسكريبت ليست مثل باقي اللغات حيث أنها تعتمد على مبدأ الـ Prototype بينما  في معظم لغات البرمجة الكائنية التقليدية، مثل Java وC++، يتم تعريف الكائنات باستخدام الفئات Classes.

أي لا يوجد بها أصناف classes حقيقًة بل محاكاة لذلك.

ونموذج الـ Prototype يتم به إنشاء الكائنات استنادًا إلى كائنات objects أخرى بدلاً من الفئات classes،  وكل كائن يمكن أن ينشئ كائنات جديدة من خلال الـ Prototype الخاص به.

لذلك عندما ترى كلمة class فهي هي مجرد واجهة مبسطة للتعامل مع الكائنات، لكن الأساس هو نموذج الـ Prototype.

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

بالتالي تلك الكلمة عبارة عن syntactic sugar وذلك مصطلح يشير إلى اختصار برمجي يقوم في الخلفية بما كنا نقوم به، فعندما تم تقديم الكلمة class في ECMAScript 6 (ES6)، كانت تهدف إلى جعل كتابة الكود الكائن أسهل وأكثر وضوحًا. ومع ذلك، تحت الغطاء، لا تزال تستخدم نفس نموذج البرمجة الكائنية القائم على الـ 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...