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

ความแตกต่างระหว่าง .extend() / .assign() และ .merge() ในไลบรารี Lodash


assign/extend รับคุณสมบัติแต่ละรายการในแหล่งที่มา คัดลอกค่าตามที่เป็นไปยังปลายทาง หากค่าคุณสมบัติเองเป็นอ็อบเจ็กต์ จะไม่มีการข้ามผ่านคุณสมบัติซ้ำๆ สิ่งนี้เรียกว่าการคัดลอก/โคลนแบบตื้น วัตถุทั้งหมดจะถูกนำมาจากต้นทางและตั้งเป็นปลายทาง

Merge รับคุณสมบัติแต่ละรายการในแหล่งที่มา ตรวจสอบว่าคุณสมบัตินั้นเป็นวัตถุหรือไม่ ถ้ามันลงไปซ้ำๆ และพยายามแมปคุณสมบัติของวัตถุลูกจากต้นทางไปยังปลายทาง

ตัวอย่าง

let _ = require('lodash');
let destination = {
   a: {
      b: 1,
      c: 2
   },
};
let source = {
   a: {
      d: 2,
      c: 3
   },
};
console.log(_.merge(destination, source));
console.log(_.extend(destination, source));

ผลลัพธ์

สิ่งนี้จะให้ผลลัพธ์ -

{ a: { b: 1, c: 3, d: 2 } }
{ a: { d: 2, c: 3 } }