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 } }