สำเนาลึกของวัตถุจะทำซ้ำทุกวัตถุที่พบในวัตถุที่เราต้องการคัดลอก สำเนาและวัตถุต้นฉบับจะไม่แชร์สิ่งใด ดังนั้นจะเป็นสำเนาของต้นฉบับ
วิธีที่ง่ายที่สุดคือการแปลงวัตถุเป็นสตริง JSON และแปลงกลับเป็นวัตถุ JS อย่างไรก็ตาม วิธีนี้ไม่อนุญาตให้คัดลอกวิธีการ
ตัวอย่าง
let obj = { foo: 1, bar: { baz: 'test' } } let newObj = JSON.parse(JSON.stringify(obj)); obj.bar.baz = 20; console.log(obj); console.log(newObj);
ผลลัพธ์
{ foo: 1, bar: { baz: 20 } } { foo: 1, bar: { baz: 'test' } }
newObj ที่นี่ไม่เปลี่ยนแปลงเมื่ออัปเดตเป็น obj ดั้งเดิม ดังนั้นการคัดลอกแบบลึกจึงสำเร็จ