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