Avatar ·

أكثر طريقة فعالة للاستنساخ العميق لكائن في JavaScript

مرحبًا بالجميع! أنا مبتدئ في JavaScript وواجهت مشكلة عند نسخ الكائنات. أحتاج إلى إنشاء نسخة مستقلة تمامًا من الكائن بحيث لا تؤثر التغييرات في النسخة على الأصل. لكن التعيين العادي لا يعمل — النسخة تشير فقط إلى نفس الكائن. إليك مثال على الكود الخاص بي: ```javascript const original = { name: "أليس", age: 30, address: { city: "موسكو", zip: 101000 }, hobbies: ["قراءة", "سباحة"] }; // أحاول النسخ const copy = original; copy.name = "بوب"; copy.address.city = "سانت بطرسبرغ"; console.log(original.name); // "بوب" — أوه، تغير! console.log(original.address.city); // "سانت بطرسبرغ" — تغير أيضًا! ``` جربت استخدام `Object.assign()` وعامل الانتشار `{...obj}`، لكنهما ينشئان فقط نسخة سطحية. الكائنات المتداخلة والمصفوفات تظل مرتبطة. على سبيل المثال: ```javascript const copy2 = {...original}; copy2.address.city = "قازان"; console.log(original.address