تفكيك الكائنات وعامل الانتشار
استخرج خصائص الكائنات باستخدام التفكيك، واستنسخ الكائنات وادمجها باستخدام عامل الانتشار، واستخدم معاملات rest في تواقيع الدوال.
تفكيك الكائنات وعامل الانتشار درس مجاني في Frontend Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Frontend Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Frontend Academy 4 دروس في المجموع.
ما المقصود بالتفكيك؟
يستخرج التفكيك القيم من الكائنات والمصفوفات إلى متغيرات مسماة. وهو اختصار لعدة عبارات للوصول إلى الخصائص، كما يجعل الكود موجزًا ويوضح الخصائص المستخدمة.
أساسيات تفكيك الكائنات
استخدم الأقواس المعقوفة على الجانب الأيسر من عملية الإسناد لاستخراج الخصائص المسماة.
const user = { name: 'Alice', age: 30, role: 'admin' };
// Without destructuring:
const name = user.name;
const age = user.age;
// With destructuring:
const { name, age, role } = user;
console.log(name); // 'Alice'
console.log(age); // 30إعادة تسمية المتغيرات المفككة
استخدم الصيغة property: newName لإعادة تسمية خاصية أثناء التفكيك. يفيد ذلك عندما يتعارض اسم الخاصية مع متغير موجود أو لا يكون الاسم وصفيًا بما يكفي.
const { name: userName, age: userAge } = user;
console.log(userName); // 'Alice'القيم الافتراضية في التفكيك
إذا كانت الخاصية undefined، تُستخدم قيمة افتراضية. ويمكن دمج ذلك مع إعادة التسمية.
const { name, role = 'viewer', theme = 'light' } = user;
// role is 'admin' (from object)
// theme is 'light' (default — not in object)تفكيك الكائنات المتداخلة
فكّك الكائنات المتداخلة بتوفير أنماط متداخلة.
const order = {
id: 42,
customer: { name: 'Bob', email: 'bob@example.com' },
total: 99.99
};
const { id, customer: { name, email }, total } = order;
console.log(name); // 'Bob'تفكيك المصفوفات
استخدم الأقواس المربعة لتفكيك المصفوفات حسب الموضع. وتجاوز العناصر باستخدام الفواصل.
const [first, second, , fourth] = [10, 20, 30, 40];
console.log(first); // 10
console.log(second); // 20
console.log(fourth); // 40
// Swap variables:
let a = 1, b = 2;
[a, b] = [b, a];
console.log(a, b); // 2 1تفكيك معاملات الدوال
فكّك القيم مباشرةً في معاملات الدوال للحصول على واجهات برمجية أنظف وكود يوضح نفسه. ويشيع ذلك جدًا في دوال مكوّنات React.
function greet({ name, greeting = 'Hello' }) {
return `${greeting}, ${name}!`;
}
greet({ name: 'Alice' }); // 'Hello, Alice!'
greet({ name: 'Bob', greeting: 'Hi' }); // 'Hi, Bob!'عامل الانتشار مع الكائنات
ينشئ عامل الانتشار { ...obj } نسخة سطحية من كائن، ويمكنه دمج الكائنات. وعند تعارض المفاتيح، تتجاوز المفاتيح اللاحقة المفاتيح السابقة.
const defaults = { theme: 'light', lang: 'en', debug: false };
const userPrefs = { theme: 'dark', lang: 'fr' };
const settings = { ...defaults, ...userPrefs };
// { theme: 'dark', lang: 'fr', debug: false }عامل الانتشار مع المصفوفات
ينشئ [...arr] نسخة سطحية من مصفوفة. استخدم عامل الانتشار لضم المصفوفات وإضافة العناصر إلى البداية أو النهاية دون تغيير المصفوفة الأصلية.
const base = [1, 2, 3];
const extended = [...base, 4, 5]; // [1, 2, 3, 4, 5]
const prepended = [0, ...base]; // [0, 1, 2, 3]
const combined = [...base, ...extended]; // [1, 2, 3, 1, 2, 3, 4, 5]صيغة Rest في التفكيك
تجمع صيغة rest الخصائص أو العناصر المتبقية في كائن أو مصفوفة جديدة. ويجب أن يكون rest آخر نمط.
const { name, ...rest } = { name: 'Alice', age: 30, role: 'admin' };
console.log(name); // 'Alice'
console.log(rest); // { age: 30, role: 'admin' }
const [head, ...tail] = [1, 2, 3, 4];
console.log(head); // 1
console.log(tail); // [2, 3, 4]النسخ السطحي مقابل النسخ العميق
ينشئ كل من الانتشار والتفكيك نسخًا سطحية. وتظل الكائنات والمصفوفات المتداخلة مراجع مشتركة. وللنسخ العميق، استخدم structuredClone(obj) (في البيئات الحديثة) أو JSON.parse(JSON.stringify(obj)) (في البيئات القديمة).
const a = { x: 1, nested: { y: 2 } };
const b = { ...a };
b.x = 99; // a.x is still 1 (shallow copy OK)
b.nested.y = 99; // a.nested.y is now 99! (reference shared)تحقق سريع
ماذا تفعل العبارة const { a, ...rest } = obj؟
مراجعة: التفكيك والانتشار
يستخرج تفكيك الكائنات الخصائص المسماة. ويستخرج تفكيك المصفوفات العناصر حسب مواضعها. أعد التسمية باستخدام النقطتين، وعيّن القيم الافتراضية باستخدام =. استخدم الأنماط المتداخلة للكائنات العميقة. ينشئ الانتشار نسخًا سطحية ويدمج الكائنات والمصفوفات. ويجمع rest الخصائص أو العناصر المتبقية.
الأسئلة الشائعة
هل درس «تفكيك الكائنات وعامل الانتشار» مجاني؟
نعم — نص درس «تفكيك الكائنات وعامل الانتشار» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Frontend Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Frontend Academy 4 دروس في المجموع.
ماذا ستتعلم في «تفكيك الكائنات وعامل الانتشار»؟
استخرج خصائص الكائنات باستخدام التفكيك، واستنسخ الكائنات وادمجها باستخدام عامل الانتشار، واستخدم معاملات rest في تواقيع الدوال. تتمرن على Frontend Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Frontend Academy؟
لا تُشترط خبرة سابقة. Frontend Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «تفكيك الكائنات وعامل الانتشار»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Frontend Academy هذا؟
نعم. كل درس في Frontend Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أساليب المصفوفات: map وfilter وreduce وfind
- تفكيك الكائنات وعامل الانتشار
- القوالب النصية والسلسلة الاختيارية
- الوحدات: import وexport