Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

วิธีที่มีประสิทธิภาพที่สุดในการโคลนวัตถุใน JavaScript คืออะไร?


สำเนาลึกของวัตถุจะทำซ้ำทุกวัตถุที่พบในวัตถุที่เราต้องการคัดลอก สำเนาและวัตถุต้นฉบับจะไม่แชร์สิ่งใด ดังนั้นจะเป็นสำเนาของต้นฉบับ

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