خصائص الكائن
الحرفي والقراءة بالنقطة صارَا في أدواتك. في النموذج الحقيقي تتبدّل الحقيبة نفسها: يظهر لون بعد اختيار المتسوّق، يختفي علم المسودّة عند الحفظ، وتسكن المدينة داخل العنوان. هذه الصفحة عمل يومي على الخصائص.
بعد الحرفي الأول
صفحة الكائنات بنت الحقيبة وقرأت حقلاً. هنا تغيّر أي المفاتيح موجودة: تجلب اسماً كان غائباً، تُسقط اسماً لم يعد لازماً، تسأل هل الاسم حاضر، تدخل كائناً مخزّناً داخل آخر، وتسرد الأسماء التي تحملها فعلاً.
خمس حركات على الخاصية
📊 إضافة، حذف، اختبار، تداخل، سرد
| الحركة | الصياغة | ماذا تحصل |
|---|---|---|
| إضافة | item.color = "blue" |
خاصية جديدة على الكائن نفسه |
| حذف | delete item.draft |
ذلك المفتاح زال |
| وجود | "sku" in item |
true أو false |
| تداخل | user.address.city |
حقل داخل كائن آخر |
| سرد | Object.keys(user) |
مصفوفة مفاتيح الكائن نفسه |
سمِّ الحركة فيتبعها السطر. الإضافة لا تصكّ كائناً ثانياً. الحذف لا يحوّل القيمة إلى سلسلة فارغة. قائمة الأسماء ليست نفس مهمة قراءة قيمة واحدة.
let item = {
name: "Mug",
price: 8
};
item.color = "blue";
console.log(item.color);
الإسناد يُنمي المفتاح الغائب
بدأ item بـ name وprice فقط. لأن color كان غائباً، السطر item.color = "blue" ينشئه. ما زال أمامك كائن واحد، صار بثلاث خصائص. الطرفية تطبع blue.
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 فعل آخر: المفتاح يبقى وبقيمة جديدة.
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 يسأل عن المفتاح، لا عن القيمة الجالسة هناك.
let user = {
name: "Lina",
address: {
city: "Shiraz",
zip: "71345"
}
};
console.log(user.address.city);
قد تحمل الخاصية كائناً آخر
address ليس سلسلة. هو كائن فيه city وzip. العبارة user.address.city خطوتان: إلى address ثم إلى city. الطرفية تطبع Shiraz. التداخل يُبقي قطع العنوان معاً بدل بسط كل واحدة على user.
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 في السكربت، وضع المدينة في فقرة.
<!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، حدّث، واقرأ السطر الجديد. الدرس التالي: دوال الكائن — دوال تعيش على الكائن.
خطوات التدريب
- ابنِ كائناً بخاصيتين، أضف ثالثة بالإسناد، واطبعها.
- ضع خاصية
draft، أزلها بـdelete، وافحص"draft" in item. - على كائن فيه
nameفقط، اطبع"name" in itemو"sku" in item. - داخل
addressبـcity، ثم اطبعuser.address.city. - اطبع
Object.keysلكائن بمفتاحين واقرأ المصفوفة. - في عرض 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يُرجع الأسماء لا القيم- حقل متداخل وحقل وصل حديثاً يمكن أن يشتركا في سطر واحد على الصفحة
- التالي: دوال الكائن — دوال مخزَّنة على الكائن
🧠 اختبر معرفتك
اختبر معرفتك
تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى