جاري التحميل...

خصائص الكائن

الحرفي والقراءة بالنقطة صارَا في أدواتك. في النموذج الحقيقي تتبدّل الحقيبة نفسها: يظهر لون بعد اختيار المتسوّق، يختفي علم المسودّة عند الحفظ، وتسكن المدينة داخل العنوان. هذه الصفحة عمل يومي على الخصائص.

بعد الحرفي الأول

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

خمس حركات على الخاصية

📊 إضافة، حذف، اختبار، تداخل، سرد

الحركة الصياغة ماذا تحصل
إضافة item.color = "blue" خاصية جديدة على الكائن نفسه
حذف delete item.draft ذلك المفتاح زال
وجود "sku" in item true أو false
تداخل user.address.city حقل داخل كائن آخر
سرد Object.keys(user) مصفوفة مفاتيح الكائن نفسه

سمِّ الحركة فيتبعها السطر. الإضافة لا تصكّ كائناً ثانياً. الحذف لا يحوّل القيمة إلى سلسلة فارغة. قائمة الأسماء ليست نفس مهمة قراءة قيمة واحدة.

إضافة خاصية لم تكن في الحرفي

javascript
let item = {
name: "Mug",
price: 8
};
item.color = "blue";
console.log(item.color);

الإسناد يُنمي المفتاح الغائب

بدأ item بـ name وprice فقط. لأن color كان غائباً، السطر item.color = "blue" ينشئه. ما زال أمامك كائن واحد، صار بثلاث خصائص. الطرفية تطبع blue.

إزالة خاصية بـ delete

javascript
let item = {
name: "Mug",
price: 8,
draft: true
};
delete item.draft;
console.log("draft" in item);

delete يرفع المفتاح

delete item.draft يزيل تلك الخاصية، لا الكائن كله. بعد ذلك "draft" in item يساوي false. الاسم والسعر يبقيان. تخزين "" أو null فعل آخر: المفتاح يبقى وبقيمة جديدة.

اسأل هل المفتاح موجود

javascript
let item = {
name: "Mug",
price: 8
};
console.log("name" in item);
console.log("sku" in item);

in يجيب بنعم أو لا عن المفتاح

"name" in item يساوي true — ذلك الاسم على الكائن. "sku" in item يساوي false — لم تُضفه قط. الخاصية الغائبة تُقرأ undefined، وundefined المخزَّن يُقرأ بالطريقة نفسها. in يسأل عن المفتاح، لا عن القيمة الجالسة هناك.

قراءة حقل داخل كائن متداخل

javascript
let user = {
name: "Lina",
address: {
city: "Shiraz",
zip: "71345"
}
};
console.log(user.address.city);

قد تحمل الخاصية كائناً آخر

address ليس سلسلة. هو كائن فيه city وzip. العبارة user.address.city خطوتان: إلى address ثم إلى city. الطرفية تطبع Shiraz. التداخل يُبقي قطع العنوان معاً بدل بسط كل واحدة على user.

سرد مفاتيح الكائن نفسه

javascript
let user = {
name: "Lina",
role: "editor"
};
let names = Object.keys(user);
console.log(names);

Object.keys يعطيك الأسماء

Object.keys(user) يُرجع مصفوفة مفاتيح ذلك الكائن — هنا ["name", "role"]. القيمة ما زلت تقرأها بنقطة أو بأقواس. القائمة تنفع حين لا تريد كل اسم مكتوباً سلفاً في الشيفرة. هي لا تطبع القيم وحدها.

اختر الحركة ثم اكتب

حقل جديد؟ أسنِد. مفتاح يجب أن يختفي؟ delete. نعم أم لا؟ in. مدينة داخل عنوان؟ تداخل ثم امشِ بالنقاط. الأسماء فقط؟ Object.keys. الدوال المخزَّنة على الكائن — المناهج — درسها التالي.

ضع مدينة متداخلة في الصفحة بعد إضافة

ابدأ بمستخدم وعنوان، أضف plan في السكربت، وضع المدينة في فقرة.

عرض الصفحة — مدينة متداخلة

html
<!DOCTYPE html>
<html>
<head>
<title>object-properties — page</title>
</head>
<body>
<p id="place">…</p>
<script>
let user = {
name: "Lina",
address: { city: "Shiraz" }
};
user.plan = "yearly";
let box = document.getElementById("place");
box.textContent = user.address.city + " — " + user.plan;
</script>
</body>
</html>

الفقرة تعرض Shiraz — yearly. المدينة كانت متداخلة سلفاً؛ plan وصل بعد الحرفي. غيّر فقط city أو plan، حدّث، واقرأ السطر الجديد. الدرس التالي: دوال الكائن — دوال تعيش على الكائن.

خطوات التدريب

  1. ابنِ كائناً بخاصيتين، أضف ثالثة بالإسناد، واطبعها.
  2. ضع خاصية draft، أزلها بـ delete، وافحص "draft" in item.
  3. على كائن فيه name فقط، اطبع "name" in item و"sku" in item.
  4. داخل address بـ city، ثم اطبع user.address.city.
  5. اطبع Object.keys لكائن بمفتاحين واقرأ المصفوفة.
  6. في عرض HTML غيّر فقط city أو plan، حدّث، واقرأ الفقرة.

زلات متكررة

  • ظنّ أن item.color = "blue" يصكّ كائناً جديداً تماماً — هو يُنمي الكائن نفسه
  • كتابة item.draft = null حين تقصد delete item.draft — المفتاح يبقى
  • معاملة المفتاح الغائب وundefined المخزَّن كسؤال واحد — استخدم in للمفتاح
  • كتابة user.city بينما city يعيش على user.address
  • توقّع أن Object.keys يُرجع القيم
  • البحث عن المناهج وthis في هذه الصفحة — ذلك الدرس التالي

الخلاصة

  • الإسناد إلى مفتاح غائب يضيف تلك الخاصية
  • delete يزيل المفتاح؛ بقية الكائن تبقى
  • "key" in obj يخبرك هل المفتاح موجود
  • الخاصية قد تحمل كائناً آخر؛ نقاط إضافية تمشي إلى الداخل
  • Object.keys يُرجع الأسماء لا القيم
  • حقل متداخل وحقل وصل حديثاً يمكن أن يشتركا في سطر واحد على الصفحة
  • التالي: دوال الكائن — دوال مخزَّنة على الكائن

🧠 اختبر معرفتك

جاهز للبدء

اختبر معرفتك

تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع

❓
8
الأسئلة
🎯
70%
للنجاح
♾️
∞
الوقت
🔄
∞
المحاولات

📝 التعليمات

  • اقرأ كل سؤال بعناية
  • اختر أفضل إجابة لكل سؤال
  • يمكنك إعادة الاختبار عدة مرات كما تريد
  • سيتم عرض تقدمك في الأعلى