สำเนาลึกของวัตถุจะทำซ้ำทุกวัตถุที่พบในวัตถุที่เราต้องการคัดลอก สำเนาและวัตถุต้นฉบับจะไม่แชร์สิ่งใด ดังนั้นจะเป็นสำเนาของต้นฉบับ
วิธีที่ง่ายที่สุดคือการแปลงวัตถุเป็นสตริง 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 ดั้งเดิม ดังนั้นการคัดลอกแบบลึกจึงสำเร็จ