تخطَّ إلى المحتوى

structuredClone()

نسخ عميق حقيقي لأي قيمة structuredClone()

structuredClone() تبني نسخة عميقة كاملة من كائن أو مصفوفة — تشمل كل مستوى تداخل، بعكس النسخ السطحي لـ {...obj} أو Object.assign().

دالة عامة مدمجة بالمتصفح ومحركات JS الحديثة، لا تحتاج استيراد مكتبة. تدعم أنواعًا لا يدعمها JSON.parse(JSON.stringify()) مثل Date وMap وSet وArrayBuffer، وتتعامل بأمان مع المراجع الدائرية (كائن يشير لنفسه) التي تكسر JSON.stringify بخطأ. لا تستطيع نسخ الدوال أو عناصر DOM — ترمي DataCloneError عند محاولة ذلك.

الصياغة

const deepCopy = structuredClone(value);

⚡ جرّب بنفسك

عدّل الكود واضغط «تحديث» لترى النتيجة فورًا — التجربة أفضل معلّم.

⚡ محرّر تفاعلي
const original = {
  user: { name: "سارة", tags: ["admin", "editor"] },
};

const copy = structuredClone(original);
copy.user.name = "عمر";

console.log(original.user.name); // "سارة" — لم يتأثر
console.log(copy.user.name);     // "عمر"
وحدة التحكّم
اضغط «تشغيل» لرؤية النتيجة هنا.

أهم المعاملات

المعاملالوظيفة
valueأي قيمة قابلة للنسخ البنيوي — كائنات، مصفوفات، Map، Set، Date، وغيرها

💡 نصائح عملية

  • استخدمها بدل {...obj} أو Object.assign() عندما تحتوي بياناتك على كائنات متداخلة تريد نسخها فعليًا لا بالمرجع
  • تدعم المراجع الدائرية بأمان — JSON.stringify يرمي خطأ فورًا معها

⚠️ أخطاء شائعة

  • محاولة نسخ كائن يحوي دوال (methods) بداخله — structuredClone ترمي DataCloneError لأن الدوال غير قابلة للنسخ البنيوي

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار JAVASCRIPT الكامل بالعربي.