بالطبع، يمكن تحقيق ذلك باستخدام تفكيك الكائنات في JavaScript (Object Destructuring). في هذه الحالة، نحتاج إلى فك تفكيك الكائنين في الدالة بحيث نستطيع الوصول إلى الخاصية المطلوبة. يمكن تحقيق ذلك عبر فك تفكيك كل من الكائن الخارجي والداخلي بالطريقة التالية:
javascriptconst stuff = {
data: {
things: [1,2,3,4]
}
};
const getThings = ({ data: { things } }) => {
console.log(things);
};
getThings(stuff); // سيطبع: [1,2,3,4]
في هذا المثال، تم استخدام تفكيك الكائنات للوصول إلى الخاصية things
داخل الكائن data
دون الحاجة إلى استخدام خطوات إضافية. يتم ذلك عن طريق توصيف هيكل الكائن المطلوب مباشرة في قوسي الدالة getThings
. تقوم الدالة بتوجيه مدخلاتها المعروفة بشكل مسبق والممثلة في الشكل ({ data: { things } })
بتخصيص قيمة things
في سياقها الصحيح. وبالتالي، يمكنك الآن الوصول إلى القيمة المطلوبة دون الحاجة لأي خطوات إضافية أو تعقيدات.
المزيد من المعلومات
بالطبع، دعني أوسع شرحي لهذا الموضوع.
في JavaScript، يعتبر تفكيك الكائنات (Object Destructuring) أحد ميزات ES6 المهمة التي تسمح بتحويل قيم الخصائص في كائن إلى متغيرات منفصلة. يسهل ذلك الوصول إلى البيانات وتنظيم الشفرة بشكل أفضل.
عند استخدام تفكيك الكائنات، يتم تحديد الخصائص التي ترغب في الوصول إليها من الكائن، ويتم استخراج قيم هذه الخصائص مباشرة إلى متغيرات محلية. في مثالنا السابق، تم استخدام تفكيك الكائنات للوصول إلى قيمة things
داخل الكائن data
.
في الدالة getThings
:
- تم تحديد ما يسمى بنمط تفكيك الكائنات داخل قوسي الدالة
({ data: { things } })
. هذا النمط يشير إلى أننا نريد الوصول إلى خصائصdata
داخل الكائن الذي يتم تمريره كمعلمة، ومن ثم نريد الوصول إلى الخصائص داخلdata
مثلthings
. - عند استدعاء الدالة
getThings
وتمرير كائنstuff
كمعلمة، تتم عملية تفكيك الكائنات تلقائياً، حيث يتم استخراج قيمةthings
من داخل الكائنdata
الموجود في الكائنstuff
. - بعد ذلك، يتم استخدام القيمة المستخرجة لـ
things
في السطرconsole.log(things);
لطباعتها في وحدة التحكم.
تعتبر تفكيك الكائنات أداة قوية لتبسيط الشفرة وجعلها أكثر قراءة وفهماً، خاصة عندما تتعامل مع هياكل بيانات معقدة أو عميقة مثل ما هو موجود في سياق سؤالك. وبالتالي، يمكنك استخدام تفكيك الكائنات للوصول بسهولة إلى البيانات المطلوبة في التطبيقات الخاصة بك.