Deep copy ของออบเจ็กต์จะ duplicate ทุกออบเจ็กต์ที่พบภายในออบเจ็กต์ที่ต้องการ copy copy และ original จะไม่ share อะไรเลย จึงเป็น copy จริง
วิธีง่ายที่สุดคือแปลง object เป็น JSON string แล้วแปลงกลับเป็น JS object แต่วิธีนี้ไม่ copy methods ได้
ตัวอย่าง
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 ที่นี่ไม่เปลี่ยนเมื่อ update original obj แสดงว่า deep copy สำเร็จ