انتقل إلى محتوى الدرس
الدرس 28
تاريخ النشر: تاريخ التحديث:
دورة جافا سكريبت

عرض وطباعة الكائنات في JavaScriptJavaScript Print Object طريقة تنسيق الكائن بأسطر متعددة، وعرض خصائص الكائن بالواجهة، وتفسير ظهور object Object

اعرض واطبع الكائنات في JavaScript بوضوح: افهم سبب ظهور [object Object] ونسّق الخصائص بأمان واستخرج المصفوفات عبر Object.keys وObject.values وObject.entries.
أقسام الدرس
6
الأمثلة
3
اللغة
العربية
المشاهدات
3,821
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

قبل عرض الكائن في واجهة التطبيق، احرص على تنظيم كتابته داخل المحرر بوضع كل زوج key: value في سطر مستقل مع إضافة فاصلة ختامية (Trailing Comma) بعد آخر خاصية.

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

مخطط مقارنة ظهور [object Object] عند الطباعة المباشرة مقابل استخراج المفاتيح والقيم والأزواج

يُفاجأ كل متعلم في بداياته بظهور العبارة الغامضة [object Object] فور محاولة عرض كائن كامل مباشرةً عبر element.textContent = user! والسبب التقني هو أن الكائنات العادية—بخلاف المصفوفات—ترث دالة التحويل النصي الافتراضية العامة التي تكتفي بإرجاع وسم النوع الداخلي "[object Object]" دون قراءة الخصائص.

في الواجهات الحقيقية، تتمثل الطريقة الأنظف لعرض بطاقة بيانات في اختيار الخصائص المحددة التي تهم الزائر وتنسيقها داخل قالب نصي مقروء ثم تمريرها بأمان إلى textContent.

JavaScript
const speaker = {
  name: 'Dr. Salma',
  topic: 'Web Security',
  hall: 'B2',
};
document.getElementById('spk-out').textContent =
  `${speaker.name} — ${speaker.topic} (Hall ${speaker.hall})`;

عندما تريد جمع قيم الكائن كلها دفعةً واحدة دون كتابة كل مفتاح يدوياً، استدعِ الدالة القياسية Object.values(obj)؛ فهي ترجع مصفوفة حقيقية تضم قيم الخصائص، مما يتيح لك وصلها فوراً بالدالة .join(" | ") لعرضها بتنسيق أنيق:

الدالة القياسيةالكائن المدخلشكل المصفوفة المرجعة
Object.keys(obj){ a: 10, b: 20 }["a", "b"]
Object.values(obj){ a: 10, b: 20 }[10, 20]
Object.entries(obj){ a: 10, b: 20 }[["a", 10], ["b", 20]]
JavaScript
const plan = { tier: 'Team', seats: 15, region: 'MENA' };
const labels = Object.keys(plan).join(', ');
const vals = Object.values(plan).join(' | ');
document.getElementById('val-out').textContent =
  `Fields (${labels}): ${vals}`;

تحول الدالة Object.entries(obj) الكائن إلى مصفوفة ثنائية الأبعاد من الأزواج [key, value]—رابطةً مهارات المصفوفات المتداخلة من الفصل الرابع بالكائنات مباشرةً! وبذلك يمكنك قراءة أول خاصية عبر pairs[0] أو آخر خاصية نصية عبر pairs.at(-1).

JavaScript
const server = { host: 'db.local', port: 5432, tls: true };
const pairs = Object.entries(server);
const firstPair = pairs[0].join(': ');
const lastPair = pairs.at(-1).join(': ');
document.getElementById('ent-out').textContent =
  `First [${firstPair}] | Last [${lastPair}]`;

لأغراض الفحص البرمجي السريع حالياً، يتيح تمرير الكائن إلى console.log(server) أو console.table(server) تصفح جميع خصائصه تفاعلياً في لوحة المطور، بينما تتكفل القوالب النصية ودوال Object.values وObject.entries ببناء واجهات عرض أنيقة للزائر.

وفي الفصل التاسع عشر المخصص لتنسيق البيانات، سنتعمق في أداة التسلسل النصي الشامل JSON.stringify لتحويل الكائنات المتداخلة بالكامل إلى نصوص قياسية صالحة للنقل الشبكي والتخزين.

خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس تنسيق الكائن بأسطر متعددة مع الفاصلة الختامية، وتفسير ظهور [object Object]، وعرض الخصائص المحددة، واستخراج المصفوفات عبر Object.keys() وObject.values() وObject.entries(). الخطوة التالية: انتقل الآن إلى درس «دوال وخصائص الكائنات في JavaScript» لإضافة وحذف وفحص الخصائص وبناء الدوال الداخلية باستخدام this.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 [object Object] وسم النوع الافتراضي [object Object]
السلسلة النصية الافتراضية التي ينتجها تحويل الكائن العادي مباشرةً إلى نص دون تحديد خصائصه.
للمراجعة
02 Object.values(obj) دالة استخراج القيم Object.values
دالة قياسية ترجع مصفوفة تحتوي جميع قيم الخصائص الذاتية الموجودة داخل الكائن.
للمراجعة
03 Object.entries(obj) دالة استخراج الأزواج Object.entries
دالة قياسية ترجع مصفوفة ثنائية الأبعاد يمثل كل عنصر فرعي فيها زوجاً من [المفتاح، القيمة].
للمراجعة
04 Trailing Comma الفاصلة الختامية بالكائن
فاصلة اختيارية توضع بعد آخر خاصية في الكائن متعدد الأسطر لتسهيل الإضافات اللاحقة بسلام.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات2

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 2 مفهومةأول بطاقة، أول خطوة
01 JSON JSON
JavaScript Object Notation
تنسيق نصي خفيف لتبادل البيانات مستلهم من صياغة الكائنات والمصفوفات في JavaScript.
للمراجعة
02 UI UI
User Interface
واجهة المستخدم التي تُعرض فيها خصائص الكائن المنتقاة بتنسيق مقروء وآمن.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. افتح مثال استخراج المفاتيح والقيم في محرر التجربة وأضف خاصية رابعة price: 49 للكائن وتحقق من النتيجة.

  2. بدّل بين التبويبات الثلاثة في المحاكي للمقارنة بين [object Object] واستخراج القيم والأزواج.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

10أسئلة 2أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي10 أسئلة تنتظرك
01

ما النص الذي يظهر في العنصر عند تنفيذ el.textContent = { name: "Sara" } مباشرةً؟

02

ماذا ترجع الدالة Object.values({ brand: "Dell", ram: 16 })؟

03

ما الدالة التي ترجع مصفوفة بأسماء مفاتيح الخصائص الذاتية للكائن؟

04

ما بنية البيانات التي ترجعها الدالة Object.entries({ x: 5, y: 9 })؟

05

وضع فاصلة ختامية بعد آخر خاصية في تعريف الكائن متعدد الأسطر يُعد صياغة صحيحة تماماً في JavaScript.

06

إذا كان const pairs = Object.entries({ host: "localhost", port: 8080 })، فما قيمة pairs[0][0]؟

07

تنفيذ التعبير "Info: " + { id: 1 } يطبع تلقائياً النص التفصيلي "Info: { id: 1 }".

08

لماذا يُعد اختيار حقول صريحة بالاسم مثل `${user.name}` أكثر أماناً للعرض من تفريغ `Object.values(user)` كاملاً؟

09

تكتفي الدوال Object.keys وObject.values وObject.entries بالخصائص الذاتية القابلة للتعداد وتتجاهل الموروثة.

10

ما ناتج تنفيذ التعبير Object.values({ a: "HTML", b: "CSS" }).join(" + ")؟