البرمجة

حل مشكلة TypeError في JavaScript: الإشارة إلى كائن غير معرف

في الكود البرمجي الذي قدمته، يتم إنشاء كائنات من النوع “Person” باستخدام الدالة المعرفة، ولكن هناك خطأ في كيفية إنشاء كائن “sally” و “holden”، مما يؤدي إلى حدوث خطأ من نوع “TypeError: sally is undefined”.

لفهم الخطأ، دعونا نلقي نظرة على الكود:

javascript
var sally = Person("Sally Bowles", 39); var holden = Person("Holden Bowles", 16);

في هذا السياق، الدالة “Person” لا تقوم بإرجاع قيمة، بل تقوم بتعيين الخصائص “name” و “age” و “species” لكائن يمثل المستخدم. ولكن عند استخدامها لإنشاء الكائن “sally” و “holden”، يتم تعيين قيمة الكائن بنفس قيمة الدالة، وهي undefined.

بمعنى آخر، السطر:

javascript
var sally = Person("Sally Bowles", 39);

يعيد undefined، وبالتالي، sally ليست كائنًا من النوع “Person” كما هو متوقع، بل هي undefined.

لحل هذه المشكلة، يجب استخدام كلمة “new” عند إنشاء الكائنات من نوع “Person”، كما يلي:

javascript
var sally = new Person("Sally Bowles", 39); var holden = new Person("Holden Bowles", 16);

بهذا التعديل، ستقوم الدالة بإنشاء كائنات “sally” و “holden” بشكل صحيح، ولن يتم ظهور الخطأ “TypeError: sally is undefined”، وبالتالي، يمكنك الآن الوصول إلى الخصائص بشكل صحيح وطباعتها كما هو متوقع.

المزيد من المعلومات

بالطبع، دعني أوسع المناقشة لفهم السياق وتقديم مزيد من المعلومات حول الكود المقدم:

في الكود البرمجي الخاص بك، يتم استخدام الدالة البسيطة (constructor function) بمسمى “Person” لإنشاء كائنات تمثل أفرادًا. الدالة تأخذ اثنين من الوسائط (name و age) وتعينها كخصائص للكائن الذي تقوم بإنشائه.

javascript
function Person(name, age) { this.name = name; this.age = age; this.species = "Homo Sapiens"; }

ثم يأتي الجزء الذي أدى إلى حدوث الخطأ:

javascript
var sally = new Person("Sally Bowles", 39); var holden = new Person("Holden Bowles", 16);

في الأصل، عند استخدام الكلمة الرئيسية “new” مع الدالة “Person”، يتم إنشاء كائنين جديدين من النوع “Person” باستخدام القيم المقدمة كوسائط. ولكن في الكود الذي قدمته، تم تركيب الكلمة الرئيسية “new” عند إنشاء الكائنات، مما أدى إلى عدم إرجاع قيمة مناسبة للمتغيرين “sally” و “holden”، وبالتالي كانت تكون “undefined”.

من الجدير بالذكر أن استخدام “console.log” لطباعة قيم الكائنات يعتبر وسيلة جيدة لفحص الأخطاء وتتبع سير التنفيذ.

javascript
console.log("sally's species is " + sally.species + " and she is " + sally.age); console.log("holden's species is " + holden.species + " and he is " + holden.age);

باصطفاف الكود بشكل صحيح وتصحيح الخطأ، ستكون نتيجة التشغيل صحيحة، وستظهر البيانات بشكل صحيح.

زر الذهاب إلى الأعلى