الاستنساخ والدمج — spread وObject.assign
استنسخوا الكائنات والمصفوفات وادمجوها باستخدام spread وObject.assign؛ وافهموا النسخ السطحي وترتيب الاستبدال
الاستنساخ والدمج — spread وObject.assign درس مجاني في JavaScript Academy على CoddyKit. هذا هو الدرس 2 من أصل 2. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في JavaScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة JavaScript Academy 2 دروس في المجموع.
مقدمة
الهدف: استنسخوا الكائنات والمصفوفات وادمجوها بأمان.
- Spread للاستنساخ والدمج
- Object.assign
- ترتيب الكتابة فوق القيم
- تنبيه بشأن النسخ السطحي

Spread: استنساخ كائن
استخدموا {...obj} لإنشاء نسخة سطحية. لا يؤدي تعديل النسخة إلى تغيير الحقول ذات المستوى الأعلى في الكائن الأصلي.
// Shallow clone with object spread
const user = { name: "Ayla", level: 1 };
const clone = { ...user };
clone.level = 2;
console.log("Original:", user);
console.log("Clone:", clone);

Object.assign: استنساخ
ينشئ Object.assign({}, obj) أيضًا نسخة سطحية. تجنبوا تعديل المصدر بإسناد القيم إلى كائن فارغ.
// Shallow clone with Object.assign
const settings = { theme: "dark", compact: false };
const copy = Object.assign({}, settings);
copy.compact = true;
console.log("Settings:", settings);
console.log("Copy:", copy);

الدمج: الترتيب مهم
يعتمد الدمج على الترتيب: تستبدل المصادر اللاحقة المفاتيح السابقة، فتصبح قيمة b هنا 9.
// Merge: later keys overwrite earlier ones
const base = { a: 1, b: 2 };
const extra = { b: 9, c: 3 };
const mergedSpread = { ...base, ...extra };
const mergedAssign = Object.assign({}, base, extra);
console.log("Spread merged:", mergedSpread);
console.log("Assign merged:", mergedAssign);

Spread للمصفوفات: الاستنساخ والدمج
يستنسخ [...arr] مصفوفةً. ادمجوا المصفوفات باستخدام [...a, ...b] من دون تعديلها.
// Arrays: clone and merge with spread
const nums = [1, 2, 3];
const cloneNums = [...nums];
const more = [4, 5];
const mergedNums = [...nums, ...more];
console.log("nums:", nums);
console.log("clone:", cloneNums);
console.log("merged:", mergedNums);

النسخ السطحي والعميق
النسخ السطحي: تكون الكائنات والمصفوفات المتداخلة مشتركة. أما في البنى العميقة، فانسخوا المستويات الداخلية صراحةً.
// Shallow copy caveat: nested objects are shared
const original = { user: { name: "Mina" }, active: true };
const shallow = { ...original };
// Mutate nested object
shallow.user.name = "Lena";
console.log("Original:", original);
console.log("Shallow:", shallow);

اختبار أسلوب الاستنساخ
تحقق سريع: إنشاء نسخة سطحية من دون تعديل.

مراجعة
مراجعة: استنسخوا باستخدام spread أو Object.assign داخل كائن فارغ، وادمجوا بوضع المصادر اللاحقة في النهاية، وتذكروا أن هذه نسخ سطحية.

الأسئلة الشائعة
هل درس «الاستنساخ والدمج — spread وObject.assign» مجاني؟
نعم — نص درس «الاستنساخ والدمج — spread وObject.assign» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة JavaScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة JavaScript Academy 2 دروس في المجموع.
ماذا ستتعلم في «الاستنساخ والدمج — spread وObject.assign»؟
استنسخوا الكائنات والمصفوفات وادمجوها باستخدام spread وObject.assign؛ وافهموا النسخ السطحي وترتيب الاستبدال تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ JavaScript Academy؟
لا تُشترط خبرة سابقة. JavaScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 2.
كم من الوقت يستغرق درس «الاستنساخ والدمج — spread وObject.assign»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس JavaScript Academy هذا؟
نعم. كل درس في JavaScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- عمليات CRUD على المصفوفات والتكرار؛ أساسيات الكائنات والوصول إليها
- الاستنساخ والدمج — spread وObject.assign