انتقل إلى محتوى الدرس

Shallow Copy vs structuredClone النسخ السطحي مقابل structuredClone

أتقن معاملي النشر والتجميع Spread وRest (...) في JavaScript: انسخ وادمج المصفوفات والكائنات، واجمع وسائط الدوال المرنة، وأنشئ نسخاً عميقة مستقلة بالدالة structuredClone().
6 صفوف تعليمية
جافا سكريبت
6 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

احذر من أشهر فخ يقع فيه المطورون مع [...arr] و{ ...obj }: فالنشر ينفذ نسخاً سطحياً للمستوى الأول فقط (Shallow Copy)! فإذا كان الكائن يضم بداخله كائناً فرعياً أو مصفوفة داخلية (مثل user.roles)، فإن النسخة السطحية تظل مرتبطة بنفس مرجع المصفوفة الداخلية في الذاكرة، وتعديلها يفسد الكائن الأصلي بصمت!

متى احتوى الكائن على مستويات متداخلة أو تواريخ، اعتمد الدالة القياسية المدمجة structuredClone(original) لإنشاء نسخة عميقة مستقلة بالكامل (Deep Copy) تفصل جميع المستويات الفرعية بأمان.

الصف 2 كود برمجي
JavaScript
const base = { name: 'Team', tags: ['js'] };
const shallow = { ...base };
const deep = structuredClone(base);
shallow.tags.push('mutated-shallow');
deep.tags.push('isolated-deep');
document.getElementById('cln-out').textContent =
  'base.tags: ' + base.tags.join(', ') + '\n' +
  'deep.tags: ' + deep.tags.join(', ');
الصف 3 ملاحظة هامة
الصف 4 ملاحظة هامة
الصف 5 ملاحظة هامة
الصف 6 ملاحظة هامة
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

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

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

ميّزت في هذا الدرس بين معامل النشر Spread ومعامل التجميع Rest، ونسخت المصفوفات والكائنات مع فهم قاعدة غلبة المفتاح الأخير، وجمعت وسائط الدوال المرنة في مصفوفة حقيقية، وعزلت البنى المتداخلة بالنسخ العميق عبر structuredClone(). الخطوة التالية: انتقل الآن إلى درس «إدارة ملفات تعريف الارتباط Cookies في JavaScript» لقراءة وضبط صلاحية وحماية ملفات الارتباط بسمات Secure وSameSite وHttpOnly!