Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

วิธี Deep Clone ออบเจ็กต์ใน JavaScript ที่มีประสิทธิภาพที่สุด

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 สำเร็จ